定义在头文件 :
#include <queue>
为什么叫优先级队列呢,首先它是一个队列,然后在队列的基础上增加了一个排序的功能(也就是给元素赋予优先级),是基于堆实现的:数据结构与算法:28 | 堆和堆排序
形式是这样的:
priority_queue<Type, Container, Functional>
三个参数分别代表:元素类型,容器类型和比较器
- 元素类型:没什么好说的
- 容器类型:默认
vector
,也可以是deque
。 - 比较器:可调用对象,用于对元素的优先级进行比较,默认是
<
常见操作:
和队列操作类似:
top() 访问队头元素
empty() 队列是否为空
size() 返回队列内元素个数
push() 插入元素到队尾 (并自动进行堆化)
emplace() 原地构造一个元素并插入队列
pop() 弹出队头元素
swap() 交换内容
常见使用方式:
priority_queue<int> q; //定义一个大顶堆
priority_queue<int, vector<int>, less<int> > q;//也是大顶堆
priority_queue<int, vector<int>, greater&l