Boost C++ 库

...世界上最受推崇和专家设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

PrevUpHomeNext

第 7. 章 Boost.Circular Buffer

Jan Gaspar

根据 Boost 软件许可证,版本 1.0 分发。(参见随附文件 LICENSE_1_0.txt 或复制于 https://boost.ac.cn/LICENSE_1_0.txt

目录

简介
Circular_buffer 示例
基本原理
实现
更多示例
头文件
建模概念
模板参数
Trac 工单
发行说明
致谢
文档版本信息
Boost.Circular_buffer C++ 参考
头文件 <boost/circular_buffer.hpp>
头文件 <boost/circular_buffer/base.hpp>
头文件 <boost/circular_buffer/space_optimized.hpp>
索引
[Note] 注意

也可获取此手册的可打印 PDF 版本。

循环缓冲区。

描述

术语 循环缓冲区(也称为环形循环缓冲区)是指内存中用于存储传入数据的区域。当缓冲区被填满时,新数据将从缓冲区的开头开始写入并覆盖旧数据。

boost::circular_buffer 是一个符合 STL 标准的容器。

它是一种类似于 std::liststd::deque 的序列。它支持随机访问迭代器,在缓冲区的开头或结尾进行恒定时间的插入和删除操作,以及与 std 算法的互操作性。

circular_buffer 专门设计用于提供**固定容量**存储。当其容量耗尽时,新插入的元素将导致元素被覆盖,覆盖位置位于缓冲区的开头或结尾(取决于所使用的插入操作)。

circular_buffer 仅在创建时、容量被显式调整时或根据需要容纳调整大小或赋值操作时分配内存。

还有一个 circular_buffer_space_optimized 版本可用。

circular_buffer_space_optimizedcircular_buffer 的一种改编,它**在创建时不会一次性分配所有内存**,而是在需要时分配内存。

预测性内存分配类似于典型的 std::vector 实现。随着容器大小的减小,内存会自动释放。

空间优化循环缓冲区的内存分配过程。容量控制器的 min_capacity 表示分配内存的最小保证量。分配的内存永远不会低于此值。min_capacity 的默认值设置为 0。可以使用构造函数参数 () capacity_control 或函数 set_capacity 设置 min_capacity

当然,空间优化版本的速度会稍慢一些。


PrevUpHomeNext