适配器(adaptor)是一个通用概念,容器、迭代器、函数都有适配器

C++标准库定义了三个顺序容器适配器:stackqueuepriority_queue

栈 stack

头文件 include <stack>

底层 默认是通过deque实现,也可以通过listvector实现。

关于deque

双端队列,一种连续空间(实际上是一段一段的连续空间,并由一个map结构统一管理)容器;
类似于vector、string;
deque能够支持快速的随机访问;
在头部和尾部添加、删除元素非常快速;
但在中间删除和添加元素比较费时。

stack支持的操作

1
2
3
4
5
6

s.pop()
s.push()
s.emplace()
s.top()

队列 queue、priority_queue

queue提供普通的先进先出的队列功能;priority_queue允许我们为队列中的元素建立优先级

头文件 #include <queue>

queue默认是通过deque实现;priority_queue默认是通过vector实现
queue也可以通过list或vector实现;priority_queue也可以通过deque实现

queue支持的操作

1
2
3
4
5
6
7
8

q.pop()//弹出队首元素
q.push()//在队尾追加
q.emplace()//在队尾追加

q.front()//返回队首元素
q.back()//返回队尾元素,仅适用于queue

priority_queue另外支持的操作

1
2
3

q.top()//返回优先级最高的元素,仅适用于priority_queue