在对结构进行排序时我们可以用sort,自己写一个cmp排序函数传进sort,就可以按照自己想要的方式排序了

但是遇到一些特殊的数据结构,它们本身就有一定的排序规则(比如说priority_queue),但我们想要根据自己制定的规则进行排序,就需要用到 ==运算符重载==

下面将以priority_queue优先队列为例,进行运算符重载

struct cmp
{
int a, b,… // 存储的信息
bool operator< (const cmp &tmp) const
{
return a > tmp.a; // 制定自己的排序规则
}
};
priority_queue<cmp> heap;

需要注意的是,当我们使用大根堆时,重载小于号,使用小根堆时,重载大于号(如下)

struct cmp
{
int a, b,… // 存储的信息
bool operator> (const cmp &tmp) const
{
return a > tmp.a; // 制定自己的排序规则
}
};
priority_queue<cmp, vector<cmp>, greater<cmp>> heap;