优先队列 priority_queue
头文件:
#include<queue>
升序定义:
priority_queue<int,vector<int>,greater<int>>q;//从小到大
降序定义:
priority_queue<int,vector<int>,less<int>>q;//从大到小
比较方式默认less,优先队列是大根堆,队头元素最大。
主要函数:
- q.empty()//判断优先队列容器q是否为空
- q.size()//返回优先队列容器中实际元素个数
- q.push(a)//元素a进队
- q.top()//获取头元素
- q.pop()//元素出队
大根堆:
int main() { priority_queue<int>p;//系统默认从大到小 p.push(1); p.push(2); p.push(3); p.push(4); p.push(4); for (int i = 0; i < 5; i++) { cout << p.top() << endl;//输出从大到小 p.pop(); } return 0; }
小根堆:
int main() { priority_queue<int, vector<int>, greater<int>>p;//定义小根堆 p.push(5); p.push(4); p.push(3); p.push(2); p.push(1); for (int i = 0; i < 5; i++) { cout << p.top() << endl;//输出从小到大 p.pop(); } return 0; }