我有C ++代码:
enum network
为什么第二个失败?
答案 0 :(得分:2)
is_sorted
对比较函数对象有要求。特别是,它必须满足Compare概念的要求。对于标准库使用的大多数(全部?)比较对象,同样的要求。
std::greater_equal
不符合Compare概念的要求。特别是,它不满足 irreflexivity :For all a, comp(a,a)==false
或不对称:If comp(a,b)==true then comp(b,a)==false
(对于所有a,b)属性。换句话说,std::greater_equal
不是严格的弱序。
正如aschepler所指出的那样,std::greater
满足了比较概念,所以你可能正在寻找它。
答案 1 :(得分:0)
greater_equal
可以专门与 is_sorted
一起使用来禁止多个相同的元素,从而强制执行严格的排序(对于 less_equal
相同,但升序)。
注意谓词用在否定中:
<块引用>如果对于指向序列的任何迭代器和任何非负整数 n 使得它 + n 是指向序列元素的有效迭代器 comp(*( it + n), *it) 评估为假。 (cppreference)