定义Stu,定义比较类less1,less1中重载了operator(),s1.age>s2.age就是age从小到大,s1.age<s2.age就是从大到小,相反的.
pq.emplace(i+18,i);就是无需显式调用了Stu构造函数,直接传入Stu需要的形参即可构造出来Stu对象,简化了了Stu对象的创建。
priority_queue<Stu,vector,less1> pq;就是说明了优先队列使用vector容器存储Stu对象,比较器使用less1
#include <bits/stdc++.h>
using namespace std;
pair<int,int> p;
class Stu{
public:
int age;
int grade;
Stu(int age,int grade){
this->age=age;
this->grade=grade;
}
friend ostream& operator<<(ostream & o,const Stu& s){
o<<"[age = "<< s.age <<", grade = "<<s.grade<<" ]";
o<<endl;
return o;
}
};
struct less1{
bool operator()(const Stu& s1,const Stu& s2)const{
return s1.age>s2.age;
}
};
int main(){
priority_queue<Stu,vector<Stu>,less1> pq;
for(int i=0;i<10;++i){
pq.emplace(i+18,i);
}
for (int i = 0; i < 10; ++i) {
cout<<pq.top();
pq.pop();
}
}