c++ - 为什么C++ STL map容器的复杂度是O(log(n))?

标签 c++ performance stl map

对于 vectorlist 等 C++ STL 容器,查找元素并插入或删除它们的复杂性是不言自明的。然而,对于 map 容器,尽管我从阅读中知道访问和插入复杂度/性能是 O(log(n)),但我无法弄清楚为什么。显然,我对 map 的理解程度还不够,因此非常感谢对这个主题的一些启发。

最佳答案

映射或集合的元素包含在树结构中;每次检查树的节点时,您都​​会确定要查找/插入的元素是小于还是大于该节点。您需要执行此操作的次数(对于适当平衡的树)是 log2(N),因为每次比较都会排除一半的可能性。

关于c++ - 为什么C++ STL map容器的复杂度是O(log(n))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11234921/

相关文章:

c++ - 计算 Action 会导致海森堡效应吗?

c++ - 非特征 float* 到 eigen::MatrixXf 的深层复制

c++ - 哪些文件替换了 strstrea.h 和 stdiostr.h?

javascript - 如何计算交互式客户端的时间?

c++ - 以有效的方式逐字节比较数据(使用 C++)

c++ - 添加多维 vector C++

c# - ReaderWriterLockSlim 扩展方法性能

r - 如何快速将numpy数组的redis字符串值转换为数据帧?

c++ - 对使用 STL 并行算法的用户有何限制?

c++ - NSSet 与 unordered_set