优先队列
关于排序:
sort函数 默认 从小到大排 自定义:多写一个cmp函数
优先队列 默认 从大到小排 大在堆顶 自定义 从小到大排: 若不是结构体:调用greater<> eg:
priority_queue<int,vector<int>,greater<int> >a;
priority_queue<float,vector<float>,greater<float> >a;
若是结构体:重载小于号 eg:
#include<iostream>
#include<queue>
using namespace std;
struct node{
int data1;
int data2;
bool operator < (const node& c)const{ //必须加const
return data1>c.data1; //从小到大排序 顺序是反的(与sort是反的!)
}
};
priority_queue<node>a;
int main(){
node p;
for(int i=0;i<5;i++){
p.data1=i;
p.data2=i;
a.push(p);
}
while(!a.empty()){
cout<<a.top().data1<<endl;
a.pop();
}
return 0;
}