【问题标题】:Efficieny of stl vector and queuestl向量和队列的效率
【发布时间】:2021-11-07 21:26:46
【问题描述】:

我想使用vectorqueue 数据结构实现一个程序。该功能需要频繁地从数据结构中推送和弹出一些元素(例如8个元素)来处理这些元素,最终数据结构将为空。处理顺序无关紧要,所以vectorqueue 都可以。如果我需要频繁地从其中推送和弹出,我想知道哪个效率更高。谢谢。

【问题讨论】:

  • 有什么理由不使用stack
  • 你在比较苹果和橘子。 std::queue 是一个容器包装器。如果您希望包装容器成为vector,您可以拥有它,此时性能是相同的。最好将std::vectorstd::deque 进行比较,std::queue 的默认容器。
  • "处理顺序无关紧要,所以vectorqueue 都可以。" -- 如果你替换vector,这句话会更有意义通过stack。这显然意味着 push/pop 是 LIFO 还是 FIFO 并不重要。

标签: c++ vector stl queue


【解决方案1】:

std::queue 不是容器。它是一个容器适配器。默认适配std::deque

该功能需要频繁push和pop一些元素...处理顺序无所谓

这似乎意味着您可以从推动的同一端弹出 (LIFO)。在这种情况下,另一个容器适配器将是合适的:std::stack。它还默认适应std::dequestd::vector的效率和适应std::vectorstd::stack的效率没有区别。使用std::deque 可能会有所不同,具体取决于您如何使用它。

【讨论】:

  • 我相信默认std::stack适应std::deque
  • @jkb 哦,原来如此。我没有检查。固定。
猜你喜欢
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
  • 2012-05-10
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
  • 2012-03-05
相关资源
最近更新 更多