结构体内嵌比较函数

比较函数分为两种:
1.普通的比较函数,以全局函数的形式呈现。
2.结构体内嵌比较函数。

相对于普通的比较函数,内嵌式的速度更快,而且如果存在多种结构的比较,内嵌式也显得更清爽。所以,这里主要讲后者。

形式:
(优先队列)

struct node
{
	int d,pos;
	bool operator <( const node &x ) const {return x.d<d;}
};

(快速排序)

struct node
{
	int x,y,z;
	bool operator < (const node &x) const {return x.z>z;}
}	a[MAXN];

写比较函数时,裸的变量表示当前的值,x.z>z,那么就是从小到大排序,x.d<d就是从大到小排序。

PS:sort默认为从小到大排序,优先队列默认为从大到小。因为优先队列默认大根堆。所以,对于优先队列而言,内嵌式要反着写。

如果涉及多维度的排序,就像写普通比较函数一样,用分支语句即可。

posted @ 2020-08-09 09:26  x_miracle  阅读(567)  评论(0编辑  收藏  举报