前言
优先队列可以快速得到一个队列中的最大/最小值
提示:以下是本篇文章正文内容,下面案例可供参考
一、基本用法
priority_queue<int>q1;//初始化
q1.push(1);//入队
q1.push(9);
q1.push(3);
q1.empty()//判断空
q1.top()//队首
q1.pop();//出队
二、一些常用的方式
1.从大到小排列元素
代码如下:
priority_queue<int>q1;
q1.push(1);
q1.push(9);
q1.push(3);
while(!q1.empty()){
cout<<q1.top()<<endl;
q1.pop();
}
2.从小到大排列元素
代码如下(示例):
priority_queue<int,vector<int>,greater<int>>q2;
q2.push(1);
q2.push(9);
q2.push(3);
while(!q2.empty()){
cout<<q2.top()<<endl;
q2.pop();
}
3.自定义类型元素
告诉计算机何为<
struct node{
int h;
int w;
friend bool operator<(node n1,node n2){
if(n1.h!=n2.h){
return n1.h<n2.h;
}
else return n1.w>n2.w;
}
};
priority_queue<node>q3;
q3.push({175,63});
q3.push({178,50});
q3.push({175,65});
while(!q.empty()){
cout<<q3.top().h<<" "<<q3.top().w<<endl;
q3.pop();
}
总结
很多地方都可以用到优先队列。比如dijkstra