c++sort 如何实现多关键字排序,以及如何升序排序降序排序
#include#include typedef struct STU { int n; int c; int m; int e; int s; }stu; using namespace std; bool cmp(stu a,stu b) { //第一关键字相同,按第二关键字排序 if(a.s==b.s) { //第二关键字相同,按第三关键字排序 if(a.c == b.c) { return a.n b.c; } //降序排序 else return a.s > b.s; // return a.s < b.s;//升序排序 } int main() { stu a[310]; int n;cin>>n; for(int i = 1; i <= n ; i ++ ) { scanf("%d%d%d",&a[i].c,&a[i].m,&a[i].e); a[i].n = i; a[i].s = a[i].c + a[i].m + a[i].e; } sort(a+1,a+n+1,cmp); for(int i = 1; i <=5; i ++ ) printf("%d %dn",a[i].n,a[i].s); return 0; }



