使用sort函数的第三个参数进行排序
C++ 代码
#include<bits/stdc++.h>
using namespace std;
struct gra{
int Chinese;
int Math;
int Eng;
int sum;
int id;
};
bool cmp(const gra& a, const gra& b){//重载这个排序函数
if(a.sum!=b.sum)return a.sum>b.sum;
else if(a.Chinese!=b.Chinese) return a.Chinese>b.Chinese;
else return a.id<b.id;
}
int main(){
int n;
cin>>n;
vector<gra> stu;
for(int i=0; i<n;i++){
gra t;
cin>>t.Chinese>>t.Math>>t.Eng;
t.sum=t.Chinese+t.Math+t.Eng;
t.id=i+1;
stu.push_back(t);
}//读入信息
sort(stu.begin(),stu.end(),cmp);//排序
int num=0;
for(vector<gra>::iterator it=stu.begin();it!=stu.end()&&num<5;it++){//迭代输出
num++;
cout<<it->id<<' '<<it->sum<<endl;
}
return 0;
}