c – 按偶数和奇数排序
发布时间:2020-12-16 10:32:30 所属栏目:百科 来源:网络整理
导读:我想知道是否可以使用std :: sort函数对偶数或奇数进行排序. 我有以下代码,但我不知道如何在std :: sort中实现 inline bool isEven(const Point n) {return n.getX()%2==0;} 它是否正确 vectorPoint c;std::sort(c.begin(),c.end(),isEven) 请指教. 解决方法
我想知道是否可以使用std :: sort函数对偶数或奇数进行排序.
我有以下代码,但我不知道如何在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::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或使其成为模板参数 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |