我有以下代码,但我不知道如何在std :: sort中实现
inline bool isEven(const Point n) {return n.getX()%2==0;}
它是否正确
vector<Point> c;std::sort(c.begin(),c.end(),isEven)
请指教.
解决方法 根据我对你的问题的理解,你想要分开奇数和偶数.如果是这样的话,std::partition
就会做到这一点. 如果你想按升序值排序并分开奇数和偶数,我会使用类似于这段代码的东西(仍然,你必须找出你想要排序的Point的哪个组件)
bool sortByEven(const int& left,const int& right){ if(left & 1 && right & 1) // both are odd { return left < right; } else if(left & 1) // left is odd { return false; } else if(right & 1) // right is odd { return true; } // both are even return left < right;}
此功能可与std::sort
一起使用,这是一个简短的例子:
std::vector<int> numbers;numbers.push_back(-1);numbers.push_back(5);numbers.push_back(12);numbers.push_back(7);numbers.push_back(-31);numbers.push_back(-20);numbers.push_back(0);numbers.push_back(41);numbers.push_back(16);std::sort(numbers.begin(),numbers.end(),sortByEven);
会给你以下输出:
-20 0 12 16 -31 -1 5 7 41
对于其他类型,只需更改int或使其成为模板参数
总结以上是内存溢出为你收集整理的c – 按偶数和奇数排序全部内容,希望文章能够帮你解决c – 按偶数和奇数排序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)