stl中priority_queue
时间: 2023-11-22 07:49:16 浏览: 114
STL中priority_queue
STL中的priority_queue是一个优先队列容器,它的底层是通过堆来实现的。它可以用来存储一组数据,并且每次取出的元素都是队列中的最大值或最小值,具体取决于我们如何定义优先级。下面是一些常用的priority_queue的函数和方法:
1. 初始化定义
```cpp
#include <queue>
priority_queue<int> q; // 默认大根堆, 即每次取出的元素是队列中的最大值
```
2. 函数方法
- q.top():访问队首元素
- q.push():入队
- q.pop():堆顶(队首)元素出队
- q.size():队列元素个数
- q.empty():是否为空
注意,priority_queue不提供clear()方法。
3. 设置优先级
我们可以通过定义比较函数来设置优先级,比较函数可以是函数指针、函数对象或者Lambda表达式。下面是一些常用的比较函数:
- 默认大根堆:priority_queue<int> q;
- 大根堆:priority_queue<int, vector<int>, less<int>> q;
- 小根堆:priority_queue<int, vector<int>, greater<int>> q;
其中,less<int>和greater<int>是STL中的函数对象,分别表示小于和大于的比较函数。
阅读全文