priority_queue的使用,首先priority_queue是以堆的概念为基础的。所有的操作都是以堆为准。
相当于对堆这种数据结构做了一次包装,提供特定的操作。
首先看priority_queue的声明,priority_queue包含在#include <queue> 头文件中。使用前记得include。
声明如下:
从声明可以看出,priority_queue的低层容器默认是vector,排序规则默认是less, 即如果想声明一个大根堆,只需要传进来一个元素类型即可。
priority_queue<int> pq;
priority_queue<long> pq;
如果想声明一个小根堆,就需要传入新的比较规则,因为模板默认比较规则是第三个参数,所以即使不改变低层容器,在声明时也是需要写上的。
priority_queue<int, vector<int>, greater<int> > pq;
如果是自定义类型,就需要为自定义类型定义比较规则。
struct Node{
int val;
int x;
};
struct cmp{
bool operator()(const Node& a, const Node& b){
return a.val > b.val;
}
};
priori