C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 按偶数和奇数排序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道是否可以使用std :: sort函数对偶数或奇数进行排序. @H_502_7@

@H_502_7@我有以下代码,但我不知道如何在std :: sort中实现

@H_502_7@

inline bool isEven(const Point n) {
return n.getX()%2==0;
}
@H_502_7@它是否正确

@H_502_7@

vector<Point> c;
std::sort(c.begin(),c.end(),isEven)
@H_502_7@请指教.

解决方法

根据我对你的问题的理解,你想要分开奇数和偶数.如果是这样的话,std::partition就会做到这一点. @H_502_7@

@H_502_7@如果你想按升序值排序并分开奇数和偶数,我会使用类似于这段代码的东西(仍然,你必须找出你想要排序的Point的哪个组件)

@H_502_7@

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;
}
@H_502_7@此功能可与std::sort一起使用,这是一个简短的例子:

@H_502_7@

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);
@H_502_7@会给你以下输出

@H_502_7@

-20 0 12 16 -31 -1 5 7 41
@H_502_7@对于其他类型,只需更改int或使其成为模板参数

大佬总结

以上是大佬教程为你收集整理的c – 按偶数和奇数排序全部内容,希望文章能够帮你解决c – 按偶数和奇数排序所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。