一.重载比较操作符函数
优先队列中类型为结构体类型的排序方法,需要重载比较操作符函数
重载“<”操作符的函数可以写在结构体里面,也可以写在结构体外面,写在结构体外面的时候,记得函数的参数要使用引用。
第一种重载方法(重载“<”操作符的函数写在结构体外面,函数的参数要使用引用):
struct node
{
int x,y;
int step;
};
priority_queue<node>q; //优先队列中元素的比较规则默认是按元素的值从大到小排序;
bool operator<(const node &a,const node &b) //括号里面是const 而且还必须是引用
{
return a.step>b.step; //从小到大排序。重载小于号。因为默认是从大到小
}
第二种重载方法(重载“<”操作符的函数写在结构体里面,函数的参数不需要使用引用):
struct node
{
int x,y;
int time; //定义一个优先队列
friend bool operator<(node a, node b)
{ //从小到大排序采用“>”号;如果要从大到小排序,则采用“<”号
return a.time> b.time; //从小到大排序
}
};
<