#include <iostream>#include <string>#include <queue>usingnamespacestd;class Person
{
private:int age;string name;
public:Person(int age,string name):age(age),name(name){}void show(){cout << age << " " << name;}friendbooloperator<(const Person &left,const Person &right);friendbooloperator>(const Person &left,const Person &right);
};//定義一個Person類booloperator>(const Person &left,const Person &right)//實現這個類的比較運算符
{if(left.age>right.age)returntrue;elsereturnfalse;
}
booloperator<(const Person &left,const Person &right)
{if(left>right)returnfalse;elsereturntrue;
}
int main()
{priority_queue<Person> q;q.push(Person(23,"jack"));q.push(Person(13,"baby"));q.push(Person(34,"man"));q.push(Person(89,"oldman"));q.push(Person(1,"birth"));//每次出隊列都是年齡最大的人,實際內部用的是最大堆while(!q.empty()){Person t = q.top();t.show();cout << endl;q.pop();}//年齡越大,優先級越高return0;
}