我不太明白std::is_sorted
算法及其默认行为。如果我们寻找参考参数 http://en.cppreference.com/w/cpp/algorithm/is_sorted,它说默认情况下std::is_sorted
使用<
操作员。相反,我发现使用<=
会很自然的。但我的问题是对于以下数字列表:
1 2 3 3 4 5
它会返回true
, 即使3 < 3
应该false
。这怎么可能?
编辑:它似乎比我想象的更糟糕,因为通过std::less_equal<int>
在这种情况下将返回 false...当我传递比较器函数时应用的条件是什么?
每 25.4/5:
序列根据比较器进行排序comp
如果对于任何
迭代器i
指向序列和任何非负整数n
这样i + n
是一个有效的迭代器,指向一个元素
顺序,comp(*(i + n), *i) == false
.
So, for
1 2 3 3 4 5
std::less<int>()(*(i + n), *i)
将返回false
对全部n
, while std::less_equal
将返回true
对于案例3 3
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)