c++ priority queue用法
时间: 2023-05-02 08:06:29 浏览: 82
优先队列(Priority Queue)是一种特殊的队列,它的元素具有一定的优先级关系,新加入的元素会自动排序到正确的位置。被弹出的元素是具有最高优先级的元素。
在程序中,我们可以使用c++中的 STL库中的 priority_queue 类来实现优先队列。priority_queue类是一个模板类,实现了一个最大堆或最小堆。默认情况下,priority_queue是一个最大堆,即队列的头部元素总是当前优先级最高的元素。
priority_queue的使用方法简单明了。我们可以通过如下步骤来使用:
1. 包含priority_queue头文件:#include<queue>
2. 定义一个优先队列对象:priority_queue<int> pq;
3. 插入元素:pq.push(x); //其中x表示要插入的元素
4. 访问队列头部元素(即优先级最高的元素):pq.top();
5. 弹出队列头部元素:pq.pop();
我们也可以自定义优先级的比较方法。比如,我们设置元素的优先级按照逆序排列,则可以通过如下方式实现:
priority_queue<int, vector<int>, greater<int> > pq;
这里greater<int>表示按照逆序排序。我们还可以使用自定义的比较方法,如:
bool cmp(const int& a, const int& b){
return a>b;
}
priority_queue<int, vector<int>, cmp> pq;
总之,priority_queue的使用方法简单,非常适合实现优先级相关的算法或数据结构。