gpt4 book ai didi

c++ - sort() 方法 c++ 中的比较器函数。为大量数字获取不同的解决方案

转载 作者:太空宇宙 更新时间:2023-11-04 15:56:20 24 4
gpt4 key购买 nike

无法理解比较器函数在按降序排序具有 1000 个元素且值为 1000000 的数组时的行为。 (数组是1索引的)

比较器函数定义的第一个实例有随机在数组中的某些索引处归零。

比较器函数定义的第二个实例工作正常。谁能解释为什么会这样

bool func(long long a, long long b){
return (a >= b);
}
sort (A+1, A + 1000 + 1, func);


bool func(long long a, long long b){
return (a > b);
}
sort (A+1, A + 1000 + 1, func);

输出 1:1000000 1000000 1000000 0 0 1000000 1000000 1000000 1000000 1000000 1000000 1000000 1000000 1000000 1000000 1000000 10000 00 1000000 1000000 1000000 1000000

输出 2:1000000 1000000 1000000 1000000 1000000 1000000 1000000 1000000 1000000 1000000 1000000 1000000 1000000 1000000 1000000 1 000000 1000000 1000000 1000000 1000000 1000000

最佳答案

当您将自定义比较函数传递给 std::sort 时,它们必须引入所谓的“严格弱排序关系”(参见 here)。你的功能

bool func(long long a, long long b){
return (a >= b);
}

不满足这些要求(例如 func(42, 42) != false)。这会导致未定义的行为,结果序列可以是任何东西。

关于c++ - sort() 方法 c++ 中的比较器函数。为大量数字获取不同的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57038157/

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