有没有像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/