トップページ > コンテナとイテレータ >
サンプルの動作確認バージョン [GCC4.4/1.40.0] [VC9/1.40.0]
#include <iostream>
#include <boost/circular_buffer.hpp>
using namespace std;
int main()
{
boost::circular_buffer<int> buf(3); // サイズ上限 3 のバッファ
buf.push_back(1); // 右端に1を足す
buf.push_back(2); // 右端に2を足す
buf.push_front(3); // 左端に3を足す
cout << buf[0] << " " << buf[1] << " " << buf[2] << endl; // 3 1 2
buf.push_front(4); // 左端に4を足す。右の2は消える
cout << buf[0] << " " << buf[1] << " " << buf[2] << endl; // 4 3 1
buf.pop_back(); // 右端の1を消す
cout << buf[0] << " " << buf[1] << endl; // 3 1
}
3 1 2 4 3 1 4 3
固定長のメモリ領域を最初に確保して、 その領域をリング状に使うことで、サイズ上限までなら push/pop _ back/front が O(1)、ランダムアクセス可能、 と非常に効率的に振る舞うSTL互換のコンテナです。 サイズを超えると反対側の端を消して上書きします。 タスクの待ち行列等々、サイズ上限を固定できるような状況でとても便利です。