优先队列

C++中的优先队列是STL中的派生容器,它仅考虑最高优先级元素。队列遵循FIFO策略,而优先级队列根据优先级弹出队列,即优先级最高的元素首先弹出。

基本语法:

1
2
3
4
5
6
7
8
9
// priority_queue<Type, Container, Functional>, 其中Type为数据类型,Container为保存数据的容器,Functional为元素比较方式。

// 案例如下:
priority_queue<int> pq; // 大顶堆
priority_queue<int, vector<int>, greater<int>> pq; // 小顶堆

/*
规律:优先队列弹出的是尾部的元素。greater<int> 和 less<int>代表nums【0】是大还是小
*/

自定义类型比较:

1
2
3
4
5
6
7
8
9
10
11
12
13
// 重写仿函数

struct tmp
{
bool operator()(int a,int b)
{
return a<b; // 大顶堆
}

}

// 使用自定义仿函数
priority_queue<int, vector<int>,tmp>