Boost C++ 库

……世界上备受推崇且设计精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu《C++ 编码标准》

第 6 章 Boost.Circular Buffer - Boost C++ 函数库
PrevUpHomeNext

第 6 章 Boost.Circular Buffer

Jan Gaspar

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

[Note] 注意

本手册也提供了一个便于打印的 PDF 版本。

循环缓冲区。

描述

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

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

它是一种序列,类似于 std::liststd::deque。它支持随机访问迭代器,在缓冲区的开头或结尾进行常数时间插入和擦除操作,并能与标准算法进行互操作。

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

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

还有一个 circular_buffer_space_optimized 版本可用。

circular_buffer_space_optimized 是对 circular_buffer 的一种改进,它 创建时不会一次性分配所有内存,而是按需分配内存。

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

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

空间优化版本当然会稍慢一些。


PrevUpHomeNext