【问题标题】:limited size queue有限大小的队列
【发布时间】:2012-06-18 15:57:45
【问题描述】:

我需要 n 个项目的队列,其中插入 (n+1)th 项目会删除第 0 个 sup> 项目和插入只能在“背面”进行。
boost 或标准库中是否已经存在这样的结构?

【问题讨论】:

  • 你能限制尺寸吗?
  • 我希望如此;无限大小的循环缓冲区与向量无法区分;)
  • 哦!是的,我明白了。而已。谢谢
  • @Rook:震惊!它应该与双端队列没有区别。
  • 哦,我很抱歉。我会走到角落里,想想我做了什么。

标签: c++ boost queue std


【解决方案1】:

您可以使用由std::queue 包裹的boost::circular_buffer,如下所示:

#include <queue>
#include <boost/circular_buffer.hpp>

typedef std::queue<my_type, boost::circular_buffer<my_type>> my_queue;
const int n = 3;
...
my_queue q(boost::circular_buffer<my_type>(n));
q.push(1);
q.push(2);
q.push(3);
q.push(4); // queue now contains 2,3,4

【讨论】:

  • 但是为什么要把它包装在 queue 中呢?为什么不裸circular_queue
  • @DiproSen:std::queue(永远)的唯一目的是防止自己访问底层容器,而不是通过推动一端并读取/弹出另一端。你是那个说你需要一个的人。
  • 现在真的很整洁,我必须说! :)
猜你喜欢
  • 2012-01-13
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-30
  • 2020-09-02
  • 2018-06-14
  • 1970-01-01
相关资源
最近更新 更多