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;
}
};
priority_queue<Node, vector<Node>, cmp> pq; //根据元素的val值,生成一个大根堆如果指向传入一个自定义类型,生成大根堆,就需要在自定义类型里面定义比较规则
struct node
{
int x,y;
bool operator < (const node & a) const
{
return x<a.x;
}
};
priority_queue<node> pq;参考博客:https://blog.youkuaiyun.com/c20182030/article/details/70757660

本文介绍了C++中的priority_queue,它基于堆数据结构并提供了特定操作。priority_queue包含在<queue>头文件中,其底层容器默认为vector,排序规则默认为less,用于创建小根堆。若要创建大根堆或处理自定义类型,需指定比较规则。
9806

被折叠的 条评论
为什么被折叠?



