对C++容器的增加篇:circular_buffercircular_buffer/any

circular_buffer

1、特点

1)循环缓冲区;

2)大小固定---实现了大小固定的循环对象当到达容器末尾时自动循环利用容器另一端的空间;

3)内存空间不能动态增长,循环使用,类似首尾相连的环。
2、实现摘要

class circular_buffer

{

begin();

end();

operator[]();

at();

front();

back():

rotate();旋转

size();

max_size();

empty();

full();

linearize():把缓冲区线性化一个普通数组

is_linearized():是否可线性化

assign();

push_back();  push_front(); 类似双端队列的deque

pop_back();  pop_front();    类似栈stack

insert();

erase();

}

3、使用

circular_buffercb(5);大小为5的循环缓冲区

cb.push_back(1);

cb.pop_front();

--------------------------------------------------------------------------------------------------------

any

1、特点

只能容纳一个任意类型的元素;比shared_ptr更安全;

容纳任意类型原因:不是类模板,而是构造函数和赋值函数均是模板函数,可以接受任意的类型,将值存入内部的模板类holder中。

因此,any实际上是一个包装类。

2、与其他容器

vectorv;

v.push_back(10);

v.push_back(10.0);

vector与tuple的区别:

相同点:可以容纳任意类型 

区别:运行时动态改变大小。



你可能感兴趣的:(【技术】Boost系列)