c++中的结构体排序,最常用到的应该就是对结构体的某一个元素进行排序,其他元素与被排序元素关联
比如这样的结构体
typedef struct student{ int id; int math; int chinese; int english; }student;
score[3]代表三门成绩,0-math,1-Chinese,2-English
typedef struct student{ int id; int score[3]; }student;
如果要对语数外三门都要排序,这样写的好处是 排序函数cmp可以少写两个
//记录当前是哪一门成绩 int flag; int cmp(student s1,student s2){ return s1.score[flag] > s2.score[flag]; }
flag必须是全局变量
这样就可以循环排序了
for(flag=0;flag<=3;flag++){ sort(stu,stu+N,cmp);