我正在学习一些STL函数,我遇到了这个函数-- 定界 .I am --为什么人们不使用lower_bound而不是二进制搜索,因为两者都做同样的事情,它们都具有O(log )复杂性。
用lower_bound编写一行代码不是比用二进制搜索编写8-9行if- their语句更好吗?还是因为人们不经常使用它,所以它们对lower_bound是否有任何限制?
发布于 2014-12-10 23:11:14
binary_search的名字很差。它通过二进制搜索告诉您集合中是否存在项。它并没有告诉你在哪里。
lower_bound告诉您项应该放在集合中的位置,但并不实际验证项是否存在于集合中的那个位置。您需要检查自己(并且小心不要取消对end迭代器的引用!)
equal_range告诉您项目应该去哪里,以及(根据first和second之间的距离)在范围内实际存在多少项,如果项目不存在则为零。在我看来,这是最有用的。它比lower_bound稍慢,但不太慢。
https://stackoverflow.com/questions/27412359
复制相似问题