【C++】STL中的运算符重载

在对结构进行排序时我们可以用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;

你可能感兴趣的:(c++,开发语言)