gpt4 book ai didi

c++ - 使用自定义比较函数排序时出现错误 :"invalid comparator"

转载 作者:IT老高 更新时间:2023-10-28 21:45:13 24 4
gpt4 key购买 nike

我正在尝试对一些整数进行排序并制作奇数,然后是偶数。我正在使用 Visual Studio 2015。

这是我的代码:

int w[]={1,2,3,4,5,6};
sort(w,w+6,[](const int&i,const int&j)->bool {
return (i&1)==(j&1)//When both are odd or even, the order is OK
||i&1;//if one is odd and one is even,check if the first one is odd
});

执行时,遇到错误“表达式:无效比较器”。我不知道为什么会导致这个错误。如何修改?

最佳答案

sort 需要 strict weak ordering .你的比较器不是一个。其中,对于严格的弱排序,comp(x, x) 必须为 false

sort 无论如何都是错误的算法(是的,你可以扭曲它来做你想做的事;不,你不应该这样做)。你想要做的是一个分区。为此,我们有 std::partition :

std::partition(std::begin(w), std::end(w), [](int x) { return x % 2 != 0; });

std::stable_partition , 如果您希望分区稳定(保持元素的相对顺序)。

关于c++ - 使用自定义比较函数排序时出现错误 :"invalid comparator",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32263560/

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