Lower_bound与二进制搜索

时间:2014-12-10 22:52:15

标签: binary-search c++-standard-library

我正在学习一些STL函数,但我遇到了这个函数 lower_bound。我很困惑,为什么人们不使用 lower_bound 而不是二进制搜索,因为两者都做同样的事情,他们都有O(记录复杂性。

使用lower_bound编写一行代码而不是8-9行使用二分搜索的if-else语句是不是更好,或者是他们对lower_bound的任何限制我不知道因为哪些人没有经常使用它?

1 个答案:

答案 0 :(得分:3)

binary_search(IMO)命名不佳。它通过二进制搜索告诉您项目中是否存在项目。它没有告诉你在哪里。

lower_bound告诉您项目应该在集合中的位置,但实际上并未验证该项目是否存在于集合中的该位置。你需要检查自己(并注意不要取消引用end迭代器!)。

equal_range告诉您项目的去向,以及(基于firstsecond之间的距离)该项目中实际存在多少项目,如果项目不存在。在我看来,它是最有用的。它比lower_bound略慢但不是很多。