C++标准模板库:09--容器适配器简介:stack、queue、priority_queue

容量适配器

一、概念

  • 一个适配器是一种机制,能使某种事物的行为看起来像另外一种事物一样

二、特点

  • 容器、迭代器、函数都有适配器
  • 一种容器适配器只能接受一种已有的容器类型
  • arrayforward_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

注意

  • 这里只是对适配器进行一个综合介绍,每个适配器的详细介绍,将在后面文章逐篇更新

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/86636828