有限大小队列

9

我需要一个队列来存储n个项目,其中插入第(n+1)项将删除第0项,并且只能在“后面”进行插入操作。
是否已经有此类结构存在于boost或标准库中?


你可以在那里给出大小限制吗? - Dipro Sen
1
我希望如此;一个无限大小的循环缓冲区将与向量无法区分 ;) - Rook
哦!我明白了。就是这样。谢谢。 - Dipro Sen
2
@Rook:令人震惊!它应该与双端队列无法区分。 - Steve Jessop
2
哦,非常抱歉。我会去站在角落里,反思一下我做了什么。 - Rook
@DiproSen:不知道,我可以为您阅读文档... - PlasmaHH
1个回答

12

您可以使用一个被boost::circular_buffer包装过的std::queue,就像这样:

#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

1
但是为什么要将它包装在“队列”中?为什么不使用裸的“循环队列”? - Dipro Sen
6
std::queue 的唯一目的(一直以来)就是防止你访问底层容器,除了通过推送一个端并读取/弹出另一个端之外。你是那个说需要它的人。 - Steve Jessop
现在这真的很棒,我必须说! :) - Mihai Todor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接