优先级队列(priority_queue)

时间:2023-01-06 17:37:03
# 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