C++ Boost库:简介和第一个示例程序
C++ Boost库:数值转换 lexical_cast
C++ Boost库:字符串格式化 format
C++ Boost库:字符串string_algo
C++ Boost库:字符串算法string_algo
C++ Boost库:类型推导BOOST_AUTO/BOOST_TYPEOF
C++ Boost库:分词处理库 tokenizer
C++ Boost库:windows下编译Boost库
C++ Boost库:日期时间库 date_time
C++ Boost库:智能指针scoped_ptr
C++ Boost库:数组智能指针 scoped_array
C++ Boost库:共享所有权的智能指针 shared_ptr
C++ Boost库:工厂函数 make_shared
C++ Boost库:共享有权的数组智能指针shared_array
C++ Boost库:弱引用智能指针 weak_ptr
C++ Boost库:禁止拷贝 nocopyable
C++ Boost库:计时器 timer
C++ Boost库:普通数组array
C++ Boost库:散列容器 unordered_set、unordered_multiset
C++ Boost库:散列容器 unordered_map、unordered_multimap
C++ Boost库:双向映射容器 bimap
C++ Boost库:环形缓冲区 circular_buffer
C++ Boost库:动态多维数组 multi_array
C++ Boost库:使用property_tree解析XML和JSON
C++ Boost库:简化循环 BOOST_FOREACH
C++ Boost库:随机数库 Random
C++ Boost库:引用库 ref
C++ Boost库:绑定库 bind
C++ Boost库:线程库 thread 跨平台多线程
C++ Boost库:互斥量 mutex
1. 简介
boost
库中的 circular_buffer
顾名思义是一个循环缓冲器,其 capcity
是固定的当容量满了以后,插入一个元素时,会在容器的开头或结尾处删除一个元素。
使用需要包含头文件:
#include<boost/circular_buffer.hpp>
2. 使用示例
#include<iostream>
using namespace std;
#include<boost/circular_buffer.hpp>
#include<boost/timer/timer.hpp>
using namespace boost;
using namespace boost::timer;
int main()
{
//环形缓存(特别像队列)
circular_buffer<int> cb(3);//容量为3
cb.push_back(1);//从尾部插入
cb.push_back(2);//
cb.push_back(3);//容量已满
//cb.push_front(1);//从头插入
//cb.push_front(2);//
//cb.push_front(3);//容量已满
for (int i = 0; i < cb.size(); ++i) cout << cb[i] << " ";
cout << endl;
//容量已满,尾部插入,踢出头部元素
cb.push_back(4);
for (int i = 0; i < cb.size(); ++i) cout << cb[i] << " ";
cout << endl;
//容量已满,头部插入,踢出尾部元素
cb.push_front(5);
for (int i = 0; i < cb.size(); ++i) cout << cb[i] << " ";
cout << endl;
cb.pop_back();//删除尾部的元素
for (int i = 0; i < cb.size(); ++i) cout << cb[i] << " ";
cout << endl;
cb.pop_front();//删除头部的元素
for (int i = 0; i < cb.size(); ++i) cout << cb[i] << " ";
cout << endl;
getchar();
return 0;
}
运行结果: