std::is_sorted 和严格较少的比较?

2024-01-03

我不太明白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(使用前将#替换为@)

std::is_sorted 和严格较少的比较? 的相关文章

随机推荐