【问题标题】:push_back and insert which is faster in c++ stl?c++ stl 中的 push_back 和 insert 哪个更快?
【发布时间】:2018-10-16 04:39:45
【问题描述】:

现在在我的程序中我有一些数据要存储。我可以将它们存储在std::mapstd::vector 中,两者都可以。但我想知道push_back in vectorinsert in map 哪个更快?

【问题讨论】:

  • vectormap 完全不同。您存储的实际类型是什么? map 不允许重复,它们都表示不同的东西,所以首先考虑可读性。
  • 已经有这样的问题了:访问stackoverflow.com/questions/13324431/…>

标签: c++ stl


【解决方案1】:

根据https://en.cppreference.commap::insert 的复杂性是“容器大​​小的对数”,而vector::push_back 是“摊销常数”。

这并不能告诉我们当容器容纳时哪一个是最快的,例如10 个元素,但它确实告诉我们对于大型容器 vector::push_back 将是最快的。

另请注意,向量允许您预先预留容量。

【讨论】:

  • "这并没有告诉我们当容器容纳例如 10 个元素时哪个最快,但它确实告诉我们对于大型容器 vector::push_back 将是最快的。" - 不,那不是它的作用。事实上,在糟糕的情况下,大型容器的速度要慢得多。它的意思是,虽然单个 push_back 可能很慢,但重复调用 push_back 将平均得到恒定的复杂度。
猜你喜欢
  • 2013-03-21
  • 2015-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-16
  • 2010-10-17
相关资源
最近更新 更多