c++ - 具有三向比较谓词的 STL 函数

标签 c++ sorting stl binary-search lower-bound

有没有像std::sort()这样的带有STL函数的库? , std::binary_search() , std::lower_bound() , std::upper_bound()接受 3 向比较谓词(更少返回 -1,等于 0,伟大返回 1)而不是更少谓词(更少为真,等于或伟大为假)?

当然,less 谓词可以很容易地从现有的 3 向谓词(如 [](A a, B b) { return compare3(a,b)<0; })中找出来,但这会导致对谓词的额外调用次数。

最佳答案

如果你看一下上述算法的实现,你会发现 lower/upper_bound 根本不做 3 向分支,binary_search 只在最后一次迭代中检查相等性和关于 sort() 我不不知道,但我几乎可以肯定它也不会做三向分支。所以你的“优化”不会给你任何提升。反之亦然,你的比较会变慢。

关于c++ - 具有三向比较谓词的 STL 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6086446/

相关文章:

mysql - 如何将以下信息合并到 1 个 mysql 查询中?

c++ - 如何调整 map 以找到最近的较小物体?

c++ - 具有动态优先级的 priority_queue

c++ - 在虚拟继承的情况下如何对待祖 parent 类的成员?

c++ - 第二次运行的奇怪方法行为

C++/STL:std::transform 给定步幅?

c++ - 将字符串添加到 vector<string> 循环时内存损坏

c++ - 按位 "not"零等于零 当零被移位计算时

c++ - 查找 vector 中小于阈值(复杂性)的所有数字

algorithm - 如何证明均匀划分是快速排序算法的最佳情况?