有没有类似于
当然,less 谓词可以很容易地从现有的三向谓词中构造出来(例如像
std::sort()
、std::binary_search()
、std::lower_bound()
和std::upper_bound()
这样接受三向比较谓词(如果小于则返回-1,相等则返回0,大于则返回1)而不是 less 谓词(如果小于则返回 true,等于或大于则返回 false)的 STL 函数库?当然,less 谓词可以很容易地从现有的三向谓词中构造出来(例如像
[](A a, B b) { return compare3(a,b)<0; }
),但这会导致对谓词进行额外的调用。
int
,这是一种廉价的测试方式(甚至更多,检查int
是否小于0、等于0和大于0可以被编译器优化为一次检查)。 比较对象可以是任意重的(字符串、复杂对象)。 - user222202*_bound
不能这样做,因为如果这样做会返回错误的结果。关于binary_search
,请参阅 Knuth 的《计算机程序设计艺术》以获取有关为什么这种“优化”具有可疑价值的详细分析。 - Yakov Galka