c++ - 在 log(n) 时间内获取指向已排序 vector 中元素的迭代器。

标签 c++ c++11 stl

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

感谢任何帮助。

最佳答案

查看lower_boundupper_bound . lower_bound 将迭代器指向第一个匹配元素,而 upper_bound 将迭代器指向最后一个匹配元素。

如果任何一个算法都找不到匹配项,它会返回一个迭代器到可以插入项目的地方,以维护一个排序的容器。

我一直觉得 binary_search 被误导了。

关于c++ - 在 log(n) 时间内获取指向已排序 vector 中元素的迭代器。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17552934/

相关文章:

c++ - 从不同的线程获取用户输入

c++ - 为什么我可以在 C++ 中有一个比率对象

c++ - 使用 std::lower_bound() 打印低于特定值的元素范围

c++ - 如何使用 TCP 窗口缩放来增加 C++ 中 AWS S3 的吞吐量?

c++ - std::list<char> 列表类型为 (char * data, int length)

c++ - 将 __int64 传递给 CreateThread 参数

c++ - 当 std::stringstream 使用 ("some content"构造时,tellg() 的预期行为是什么,std::ios::in|std::ios::ate)?

c++ - 使用 end() 迭代到 std::vector 的最后一个元素--

c++ - 如何用链表替换 vector C++

c++ - 创建一个求和函数以仅对 vector 的一部分求和