gpt4 book ai didi

c++ - 按偶数和奇数排序

转载 作者:太空狗 更新时间:2023-10-29 19:44:10 25 4
gpt4 key购买 nike

我想知道是否可以使用 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 或将其设为 template 参数

关于c++ - 按偶数和奇数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13416712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com