c++ - 在 C++ 的集合中查找方法的时间复杂度是多少?

标签 c++ stl find set

set<int> s;

s.insert(1);
s.insert(2);
...
s.insert(n);

我想知道 s.find(k) 需要多少时间,其中 k 是 1..n 中的一个数字? 我假设它是 log(n)。这是对的吗?

最佳答案

O( log N ) 搜索单个元素。

§23.1.2 表 69

expression  return            note                                   complexity
a.find(k)   iterator;         returns an iterator pointing to an     logarithmic
            const_iterator    element with the key equivalent to k, 
            for constant a    or a.end() if such an element is not 
                              found

关于c++ - 在 C++ 的集合中查找方法的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2790993/

相关文章:

c++ - 从 .tsv 文件中读入

c++ - STL 算法将整个容器而不是 .begin(), end() 作为 arg?

c++ - STL 中的 vector 与列表

shell - 使用 find 和 sed 将文件名添加到文件开头

unix - find -exec mv 告诉我没有这样的文件或目录

c++ - constexpr 构造函数在 GCC 在编译时评估时给出不同的结果

c++ - 如何检查普通字符是否已签名或未签名?

c++ - 使枚举调试器感知的宏?

c++ - 我们可以安全地依赖迭代器 v.end() 的位置吗?

linux - 获取模式给定目录中包含给定文本的文件列表