Boost C++ 库

……是世界上最受推崇、设计最精巧的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ Coding Standards

动态缓冲区要求 (版本 2) - Boost C++ 函数库
PrevUpHomeNext

动态缓冲区封装了可能根据需要自动调整大小的内存存储。

动态缓冲区类型 X 除了满足下面列出的要求外,还必须满足 CopyConstructible (C++ 标准, [copyconstructible]) 类型的要求。

在下表中,X 表示动态缓冲区类,x 表示类型为 X& 的值,x1 表示类型为 const X& 的值,posn 表示类型为 size_t 的值,u 表示一个标识符。

表 14. DynamicBuffer_v2 要求

表达式

type

断言/注
前提/后置条件

X::const_buffers_type

满足 常量缓冲区序列 要求的类型。

此类型将底层内存表示为 @c const_buffer 对象序列。

X::mutable_buffers_type

满足 可变缓冲区序列 要求的类型。

此类型将底层内存表示为 @c mutable_buffer 对象序列。

x1.size()

size_t

返回底层内存的大小(以字节为单位)。

x1.max_size()

size_t

返回底层内存允许的最大大小。

x1.capacity()

size_t

返回底层内存在无需重新分配的情况下可以增长到的最大大小。

x1.data(pos, n)

X::const_buffers_type

返回一个常量缓冲区序列 u,该序列表示从偏移量 pos 开始的底层内存,并且 buffer_size(u) <= n

x.data(pos, n)

X::mutable_buffers_type

返回一个可变缓冲区序列 u,该序列表示从偏移量 pos 开始的底层内存,并且 buffer_size(u) <= n

x.grow(n)

要求:size() + n <= max_size()

扩展底层内存以容纳末尾的 n 个额外字节。动态缓冲区将根据需要重新分配内存。之前使用 data() 获取的所有常量或可变缓冲区序列都将失效。

抛出:如果 size() + n > max_size(),则抛出 length_error

x.shrink(n)

从底层内存的末尾移除 n 个字节。如果 n 大于底层内存的大小,则底层内存将被完全清空。之前使用 data() 获取的所有常量或可变缓冲区序列都将失效。

x.consume(n)

从底层内存的开头移除 n 个字节。如果 n 大于底层内存的大小,则底层内存将被完全清空。之前使用 data() 获取的所有常量或可变缓冲区序列都将失效。



PrevUpHomeNext