Boost 之circular_buffer
来源:互联网 发布:js计算一年中的某天 编辑:程序博客网 时间:2024/05/16 19:51
circular_buffer
是一个符合STL的容器。它是一种类似于std::list
或std::deque
的序列。
它支持随机访问迭代器,在缓冲区头部或尾部的常量时间插入和删除操作,与std
算法的互操作能力。circular_buffer
被特别设计为提供固定容量的存储大小。当其容量被用完时,新插入的元素会覆盖缓冲区头部或尾部(取决于使用何种插入操作)的元素。
这种特性适合用于在real time pricing中固定(or changeing) window。 e.g FFT 中更新data
circular_buffer
仅在创建时、显式调整容量时,或需要重新调整大小或赋值操作时才进行内存分配。另一方面,还有一个circular_buffer_space_optimized
可用。它是circular_buffer
的一个适配器,它不在创建时分配内存,而是在需要时分配内存。
用法:
#include <boost/circular_buffer.hpp> int main(int /*argc*/, char* /*argv*/[]) { // 創建一個容量為3個整數的循環緩衝區。 boost::circular_buffer<int> cb(3); // 插入一些元素到緩衝區。 cb.push_back(1); cb.push_back(2); cb.push_back(3); int a = cb[0]; // a == 1 int b = cb[1]; // b == 2 int c = cb[2]; // c == 3 // 現在緩衝已滿,再插入元素將覆寫最前面的元素。 cb.push_back(4); // 用 4 覆蓋 1. cb.push_back(5); // 用 5 覆蓋 2. // 現在緩衝區包含 3, 4 和 5. a = cb[0]; // a == 3 b = cb[1]; // b == 4 c = cb[2]; // c == 5 // 可以從前端或後端彈出元素。 cb.pop_back(); // 5 被刪除。 cb.pop_front(); // 3 被刪除。 int d = cb[0]; // d == 4 return 0; }
更多请参阅:
http://boost.ez2learn.com/libs/circular_buffer/doc/circular_buffer.html
0 0
- Boost 之circular_buffer
- boost之circular_buffer
- Boost库之circular_buffer
- Boost学习之循环缓冲区--circular_buffer
- boost circular_buffer的使用
- boost.circular_buffer简介
- boost.circular_buffer简介
- boost.circular_buffer简介
- boost.circular_buffer简介
- boost circular_buffer的使用
- boost::circular_buffer简介
- boost循环队列 circular_buffer
- boost.circular_buffer简介
- 环形缓冲区,魔戒lordrings,boost的circular_buffer
- boost下circular_buffer的速度问题
- 环形缓冲区,魔戒lordrings,boost的circular_buffer
- 环形缓冲区,魔戒lordrings,boost的circular_buffer
- Boost::circular_buffer——循环缓冲区
- 命令行输入命令错误解决方法
- 黑马程序员 java高新技术- 类加载器和动态代理
- STL 笔记
- 1515:打印1到最大的N位数 @jobdu
- 黑马程序员 jdk1.5新特性和枚举。
- Boost 之circular_buffer
- 1516:调整数组顺序使奇数位于偶数前面 @jobdu
- timer
- 1517:链表中倒数第k个结点 @jobdu
- nginx实现310重定向
- 删除mssql企业管理器中的服务器注册名
- 常见的百度蜘蛛IP
- Reorder List 链表首尾交叉排列@LeetCode
- 字符数组 字符串