应用场景:结构体
结构体排序有两种常用的方法,因为结构体是自定义类型,编译器不知道你是按照什么方式排序。
1.cmp函数
sort(node+1,node+1+n,cmp);
cmp函数:
cmp
(compare)意思是比较,快速排序就是选一个中点然后通过其他的元素与中点的元素比较进行排序,所以这里的cmp
就是进行那个比较的操作(如普通快排的<)
2.简便写法:
框架:
sort (node + 1, node + 1 + n, [] (node x, node y) {
//cmp内容
});
就比如一个结构体
:
struct Edge { int a, b, w; } a[N];
然后按照w
从大到小排序,那么写法就是:
sort (node + 1, node + 1 + n, [] (node x, node y) {
return x.w > y.w;
});
这样就方便了很多。
3.重载运算符
运算符重载的方法是定义一个重载运算符函数,在需要执行被重载的运算符时,系统自动调用该函数。所以运算符重载实际上时函数的重载。
框架如下:
struct node {
//blabla,定义成员
bool operator 符号(const node& W)const {
比较规则;
}
}
就比如一个结构体
:
struct Edge { int a, b, w; } a[N];
然后按照w
从大到小排序,那么写法就是:
struct Edge {
int a, b, w;
bool operator< (const Edge& W)const { return w > W.w; }
} a[N];