容量适配器
一、概念
- 一个适配器是一种机制,能使某种事物的行为看起来像另外一种事物一样
二、特点
- 容器、迭代器、函数都有适配器
- 一种容器适配器只能接受一种已有的容器类型
- array和forward_list没有容器适配器
三、如何理解容器适配器
- 前面我们已经学习过了vector、deque、list等容器类型,它们都有各自的特点与结构
- 容器适配器就是通过上面这些容器底层实现,使上面那些容器能拥有一些行为和特点。
- 例如stack适配器使用vector实现,使vector具有栈的结构特点。queue适配器使用list,使list具有队列的特点....
四、分类
stack | 栈。具有先进后出的特点。可以使用除array、forward_list之外的容器实现 |
queue | 队列。具有先进先出的特点。可以构造于list、deque |
priority_queue | 优先级队列。可以构造于vector、deque |
五、3个容器适配器都支持的操作和类型
size_type:无符号整型,用于表示当前容器的大小、索引等
value_type:适配器中存在的元素类型
container_type:实现适配器的底层容器类型
stack<int,vector<int>> num;
stack<int,vector<int>>::value_type i;//i为int类型
stack<int,vector<int>>::container_type j;//j为vector类型
//构造函数
A a;//创建一个名为a的空适配器
A a(b);//创建一个a的适配器,内容为b的拷贝
a.empty();//判断当前适配器是否为空
a.size();//返回a中的元素个数
a.swap(b);//交换a和b。成员函数版本
swap(a,b);//同上。系统函数版本
六、如何创建
1.默认创建
例如
- stack<int> num;//创建一个元素类型为int的stack适配器,其底层容器类型由系统自行决定
2.显示创建
例如
- stack<string,vector<string>> str;//创建一个元素类型为string的stack适配器,其底层容器类型为vector
注意
- 这里只是对适配器进行一个综合介绍,每个适配器的详细介绍,将在后面文章逐篇更新