priority_queue的重载运算符
一.重载“<”操作符定义优先级
#include<queue>
#<string>
#<iostream>
using namespace std;
struct info
{
string name;
int score;
bool operator <(const info&a)const
{
return a.score<score;
}
};
int main()
{
priority_queue<info> q;
info p;
p.name="Bob";
p.score=86;
q.push(p);
p.name="alin";
p.score=78;
q.push(p);
p.name="yum";
p.score=100;
q.push(p);
while(!q.empty())
{
cout<<q.top().name<<" "<<q.top().score<<" "<<endl;
q.pop();
}
return 0;
输出结果
alin 78
Bob 87
yum 100
二.重载“()”运算符定义优先级
#include<queue>
#include<vector>
#include<iostream>
using namespace std;
struct mycmp
{
bool operator ()(const int& a,const int& b)
{
return a>b;
}
};
int main()
{
priority_queue<int,vector<int>,mycmp> q;
q.push(1);
q.push(2);
q.push(3);
while(!q.empty())
{
cout<<q.top()<<" ";
q.pop();
}
cout<<endl;
return 0;
}
运行结果:
1 2 3