大家使用结构体的时候,一般一个结构体都会包含多个数据种类,这时在给结构体排序的时候我们就会遇到分级排序的问题。比如:一个班的学生有语文,英语,数学三门学科,排名是按照总分>语文>英语>数学的优先级来排的,这时候我们需要自己写一个cmp函数来给sort使用:
1)首先,我们定义一个有多个数据的结构体:
struct node
{
int a,b;
};
2)接下来我们写一个用于先按照a从小到大排,当a相等时,再按b从小到大排的比较函数
bool cmp(node x,node y)
{
if(x.a!=y.a) return x.a<y.a;
return x.b<y.b;
}
当我们这样写的时候就保证了排序的优先级是a>b;
此外,含有两个以上元素的结构体的排序是一样的,只不过cmp函数里面的if语句要多一点而已,还有就是如果希望是从大到小排,只需要把上述cmp里面的 “<” 号改成 “>” 号就可以了。