2012-06-15 55 views
6

我需要Ñ项,其中(Ñ +1)项目的插入除去0 项和插入一个队列只能在“返回”制作。
在boost或标准库中是否有这样的结构?有限大小队列

+1

推动循环缓冲区? – PlasmaHH

+0

你可以在那里给大小限制吗? –

+1

我希望如此;无限大小的循环缓冲区将与矢量无法区分;) – Rook

回答

8

你可以使用一个boost::circular_bufferstd::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

但为什么将它包装在'队列'中?为什么不露出'circular_queue' –

+5

@DiproSen:'std :: queue'(永远)的唯一目的是防止自己访问底层容器,而不是通过推入一端并读取/弹出另一端。你是谁说你需要一个。 –

+0

现在这真的很干净,我必须说! :) –