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);