【问题标题】:STL container performance overview [duplicate]STL 容器性能概述 [重复]
【发布时间】:2011-10-19 06:41:08
【问题描述】:

可能重复:
What are the Complexity guarantees of the standard containers?

从我昨天的问题std::queue<T, list<T> >::size() is slow in O(n)? 的答案中,我了解到我对 STL 容器性能特征的假设并不总是正确的。是时候学习了!

您是否知道任何“备忘单”,例如有关常见 STL(可能还有 Boost)容器的概述,例如 vectorlistdequemaphash_map/unordered_map 等。关于插入、删除、size() 等操作的性能特征(如标准所示)?

【问题讨论】:

标签: c++ performance boost stl containers


【解决方案1】:

有一个很好的图表比较了所有标准库容器的性能here

【讨论】:

  • 非常好,谢谢。但是,并没有列出每个容器的性能(有时它只是说“取决于容器”),遗憾的是,对于适配器来说 size() 操作据说是 O(1),这是不正确的......
  • 希望能把相关内容贴在这里,但是cplusplus.com提到了版权,我不确定在这里重新创建表格是否侵犯版权。
  • 不以准确性出名 (cplusplus.com)。
  • @LokiAstari:确实,我记得这里的帖子大致相同,但我不记得有人在上面提到的表格中引用了任何不正确之处。
  • IIRC,部分问题是至少 C++03 说size()“应该”是O(1)。不是“是”O(1)。这导致一些人认为list::size()(通常size() 用于序列)是保证O(1),但严格来说并非如此。 listsplice() 函数之一不能同时是 O(1)size()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多