用法
- 适合用于固定空间位置及大小的情况
- 构造函数必须传入初始队列大小
- 支持下标引用,0表示队头位置,而不是队列空间的起始位置,中间某个下标会自动跨过队列空间的结束位置
- 支持begin、end等常用stl iterator用法
- 删除队头附近的元素使用rerase(iterator, iterator),会将队头到iterator之间(如果有)的值往后移
- circular_buffer::array_one、circular_buffer::array_two这两个方法可以获得从队头到队尾两个连续的内存块
举例
// 包含必要的头文件
#include <boost/circular_buffer.hpp>
// 最大3个元素的队列,插入第四个元素后的情况
boost::circular_buffer<int> b(3);
b.push_back(1);
b.push_back(2);
b.push_back(3);
b.push_back(4);
assert(b[0]==2);
assert(*b.array_one().first==2);
assert(b.array_one().second==2);
assert(*b.array_two().first==4);
assert(b.array_two().second==1);