基本概念
priority_queue 优先级队列,不是FIFO,而是始终把最优先级的数据放在队首
也是自适应容器(容器适配器),不能使用list类型
包含:
- 最大值优先级队列 priority_queue< int, deque< int >> pq;
- 最小值优先级队列 priority_queue< int, deque< int >, greater> pq;
常用函数:
pq.empty()、pq.size()、pq,top()、pq.pop()、pq.push(item)
示例代码
#include <iostream>
#include <queue>
#include <vector>
#include <deque>
using namespace std;
int main()
{
priority_queue<int> pq;
pq.push(10); //默认是最大值优先级队列
pq.push(5);
pq.push(-1);
pq.push(20);
cout << "优先级队列里一共有:" << pq.size() << " 个数据" << endl;
while(pq.size() != 0)
{
cout << "从优先级队列里面删除:" << pq.top() <<endl;
pq.pop();
}
cout << "优先级队列里一共有:" << pq.size() << " 个数据" << endl;
cout << endl;
//最小值优先级队列,第三个参数是一个谓词
priority_queue<int, deque<int>, greater<int>> pq2; //最小值优先级队列
pq2.push(10);
pq2.push(5);
pq2.push(-1);
pq2.push(20);
cout << "最小值优先级队列里一共有:" << pq2.size() << " 个数据" << endl;
while(pq2.size() != 0)
{
cout << "从优先级队列里面删除:" << pq2.top() << endl;
pq2.pop();
}
return 0;
}