本文共 1574 字,大约阅读时间需要 5 分钟。
适配器(Adaptor)是提供接口映射的模板类。适配器基于其他类来实现新的功能,成员函数可以被添加、隐藏,也可合并以得到新的功能。
STL提供了三个容器适配器:queue、priority_queue、stack。
这些适配器都是包装了vector、list、deque中某个顺序容器的包装器。注意:适配器没有提供迭代器,也不能同时插入或删除多个元素。
本文地址:,转载请注明源地址。
先进先出(FIFO)的数据结构
可供选择的容器只有deque和list。对大多数用途使用默认的deque。
1、要用到头文件#include<queue>
2、常用函数
先进后出(FILO)的数据结构
可以使用三个标准顺序容器vector、deque、list中的任何一个作为stack的底层模型。
1、要用到头文件#include<stack>
2、常用函数
<priority_queue> 内部实现: 堆
priority_queue<T, Sequence, Compare>
支持操作:
push() O(logn)
pop() O(logn)
top() O(1)存取队列中的第一个元素,与queue不同
See also: push_heap(), pop_heap() … in <algorithm>
#include#include using namespace std;priority_queue maxheap; //int最大堆 struct cmp{ bool operator()(int a,int b) { return a > b;}};priority_queue ,cmp> minheap; //int最小堆
优先级的比较函数,可以使用缺省默认,也可以重载自己编写的比较函数。
1) 假设优先队列中的元素为结构体,要对其中某个变量排序。此时可以在结构体中重载操作符:
priority_queue
2)如果是根据与优先队列中某个元素相关的变量排序,且此变量不在结构体中,则可参考greater<int>() 的方式去重载(),具体做法如下:
priority_queue