【问题标题】:Iterate over C++ STL queue [duplicate]迭代C++ STL队列[重复]
【发布时间】:2019-09-29 04:03:28
【问题描述】:

我试图在 c++ 中迭代 STL 堆栈,但无法这样做。

是否甚至可以在不弹出的情况下迭代 C++ STL 堆栈或队列(如向量)?

【问题讨论】:

  • 如果你只想迭代它并且这是不可能的,那么堆栈就失去了它的意义。正如您所建议的,您应该使用矢量而不是那个。
  • 可以使用these answers提出的函数访问底层受保护成员std::queue::c
  • @Hiroki 但是为什么要使用std::queue呢?
  • @MatteoItalia 是的,可能没有理由。我完全同意使用std::deque :)

标签: c++


【解决方案1】:

不,您不能迭代 std::queue,因为这不是它的目的。

一个允许在两端快速插入以及迭代的容器是std::deque。请注意,迭代速度比 std::vector 慢,但开始时的插入/删除要快得多。

【讨论】:

  • 友情提醒,std::queue 并不是一个真正的容器,而是一个容器适配器,其生命中唯一的目的就是简化std::deque 接口。
  • @MatteoItalia 你说得对,非常感谢您指出这一点。
猜你喜欢
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多