STL具有3路比较谓词

时间:2011-05-22 06:34:51

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

是否有任何具有STL函数的库,如std::sort()std::binary_search()std::lower_bound()std::upper_bound()接受3路比较谓词(返回-1 on less,0 on on等于,1对伟大的)而不是较少的谓词(真实的较少,假的相等或伟大)?

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

1 个答案:

答案 0 :(得分:4)

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