Vin*_*ent 11 c++ sorting comparator stl-algorithm c++11
我不太了解std::is_sorted算法及其默认行为.如果我们查看cppreference,它会说默认情况下std::is_sorted使用<运算符.而不是那样,我发现使用<=是自然的.但我的问题是,对于以下数字列表:
1 2 3 3 4 5
Run Code Online (Sandbox Code Playgroud)
它会回来true,即使3 < 3应该false.怎么可能?
编辑:它似乎比我想象的更糟糕,因为std::less_equal<int>在这种情况下传递将返回false ...当我传递比较器函数时应用的条件是什么?
awe*_*oon 10
每25.4/5:
序列相对于分类到一个比较器
comp,如果为任何迭代器i指向序列和任何非负整数n,使得i + n是指向序列的元素的有效迭代,comp(*(i + n), *i) == false.
因此对于
1 2 3 3 4 5
Run Code Online (Sandbox Code Playgroud)
std::less<int>()(*(i + n), *i)将返回false所有n,同时std::less_equal将返回true案件3 3.
| 归档时间: |
|
| 查看次数: |
1289 次 |
| 最近记录: |