# include <iostream>
# include <queue>
# include <vector>
# include <deque>
using namespace std;
/*
优先级队列(priority_queue)
最大值优先级队列,最小值优先级队列
自适应容器
priority_queue允许对数据随机的操作,所有就不能用list
操作:
q.empty(); 是否为空
q.size(); 大小
q.top(); 查看队首元素
q.pop(); 在队首删除数据,就是出队
q.push(item); 根据优先级大小排序
*/
int main(){
priority_queue<int,vector<int>,less<int> > pq;//默认vector容器与less最大值优先级队列
priority_queue<int,deque<int>,greater<int> > pq2;//deque不是默认的是换个容器,greater最小值优先级队列
//默认是最大值优先级队列
pq.push(10);
pq.push(20);
pq.push(9);
//查看队首元素
cout<<pq.top()<<endl<<endl; //20
//对元素个数
cout<<pq.size()<<endl<<endl;
//删除队中的元素
while(!pq.empty()){
cout<<pq.top()<<" ";
pq.pop();//删除
}
cout<<endl;
//最小值优先级队列
pq2.push(100);
pq2.push(-1);
pq2.push(-99);
//删除所有元素
while(!pq2.empty()){
cout<<pq2.top()<<" ";
pq2.pop();//删除 没有返回值
}
cout<<endl;
return 0;
}
运行结果:
20
3
20 10 9
-99 -1 100