【问题标题】:Is there a container that I can add and remove from both ends有没有可以从两端添加和删除的容器
【发布时间】:2018-05-27 15:09:39
【问题描述】:

在 C++ 中是否有一个容器可以用来在两端添加元素,而不仅仅是后面或前面,而是想在任一端添加元素。同样,从任何一端移除元素,而不仅仅是从一端移除。也许在 STL 或 Boost 中?

【问题讨论】:

  • std::list 呢?
  • 那会很完美!谢谢!
  • std::deque?如果你需要随机访问(比如at() 和/或operator[]),我建议std::deque;否则我想std::list 是个不错的选择。
  • @max66 yes 向下滚动超过接受的答案,您将看到 C++11 的更新流程图。
  • @JustinRandall - 永远不要停留在第一个答案:(!谢谢。

标签: c++11 boost stl containers


【解决方案1】:

您可以通过v.insert(v.begin(), x) 将元素x 可移植地添加到序列容器(vector/deque/list) 的前面。但是,对于vector,这是一个 O(n) 操作(这就是为什么vector 没有方便的push_front 操作)并且它重新定位所有现有元素。如果您不想重新定位现有元素,dequelist 可能更合适。

【讨论】:

  • 请不要随便推荐listlist 是一个非常特殊用途的容器,几乎总是一个坏主意。
猜你喜欢
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
  • 2016-03-30
  • 1970-01-01
  • 1970-01-01
  • 2014-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多