在log(n)时间内获取有序向量中的元素的迭代器.

Ama*_*tam 1 c++ stl c++11

我有一个已排序的向量,并希望在其中找到一个特定的元素.我可以使用binary_search它,但它只会告诉它是否存在.我还需要一个迭代器来访问该元素.有没有一种简单的方法,或者我必须按顺序搜索它.

任何帮助赞赏.

Mar*_*som 6

调查lower_boundupper_bound.lower_bound给迭代器赋予第一个匹配元素,同时upper_bound给迭代器提供一个超过最后一个匹配元素的迭代器.

如果任一算法未能找到匹配项,它会将迭代器返回到可以插入项目的位置以维护已排序的容器.

我一直觉得这binary_search是误导性的.

  • 或“ equal_range”,它可以为您提供一个简单的当前测试(“ first!= second”),如果是,则可以获取元素“ * first”。 (2认同)