priority_queue是优先级队列,在C++标准库中提供,提供了类似队列的功能,但是每次顶部元素都是队列中 优先级最高的元素。
priority_queue<class _Tp, _Container, _Compare> A;
priority_queue的容器默认选择的是vector,
priority_queue的优先级,对于int类型,默认是优先取大的。
如果想要从小到大排,可以如下实现:
priority_queue<int,vector<int>,greater<int> > A;
对于其他类型的元素,要实现优先级自定义的指定,可以自己写运算符"<"的重载。
比如,试验代码如下:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <queue>
#include <iterator>
using namespace std;
struct node{
int x,y;
};
bool operator<(node a,node b){//运算符<的重载
if(a.x==b.x) return a.y>b.y;
return a.x>b.x;
}
int main(){
int n;
cin>>n;
priority_queue<node> A;
for(int i=0;i<n;i++) {
node aa={rand(),rand()};
//cout<<aa.x<<endl;
A.push(aa);
}
while(A.empty()==0){
cout<<A.top().x<<" "<<A.top().y<<endl;
A.pop();
}
cout<<endl;
return 0;
}