gpt4 book ai didi

c++ - 为什么 is_sorted 不能与 greater_equal 一起正常工作?

转载 作者:行者123 更新时间:2023-11-30 03:32:06 29 4
gpt4 key购买 nike

我有 C++ 代码:

auto test = vector<unsigned int>({3, 2, 1});
assert(is_sorted(test.begin(), test.end(), greater_equal<unsigned int>())); //passes

test = vector<unsigned int>({3, 1, 1});
assert(is_sorted(test.begin(), test.end(), greater_equal<unsigned int>())); //fails

为什么第二个失败了?

最佳答案

is_sorted 对比较函数对象有要求。特别是,它必须满足比较概念的要求。标准库使用的大多数(全部?)比较对象都有相同的要求。

std::greater_equal 不满足比较概念的要求。特别是,它不满足非自反性:For all a, comp(a,a)==false 也不满足不对称性:如果 comp(a,b)==true 那么 comp(b,a)==false (对于所有 a,b)属性。换句话说,std::greater_equal 不是严格的弱排序。

正如 aschepler 所指出的,std::greater 满足比较概念,所以这可能就是您要找的东西。

关于c++ - 为什么 is_sorted 不能与 greater_equal 一起正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43696477/

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