2012-06-15 54 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

現在這真的很乾淨,我必須說! :) –