c – 按偶数和奇数排序

c – 按偶数和奇数排序,第1张

概述我想知道是否可以使用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 :: 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::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 – 按偶数和奇数排序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1220962.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存