容器排序
1 #include<iostream> 2 #include<algorithm> //排序 3 #include<vector> //容器 4 using namespace std; 5 struct stu 6 { 7 int num; 8 int d; 9 int c; 10 int sum; 11 }; 12 bool comp(stu &a,stu &b) //传引用 13 { 14 if(a.sum>b.sum) return true; //true为按()内规则排序 15 else if(a.sum==b.sum) 16 { 17 if(a.d>b.d) return true; 18 else if(a.d==b.d) 19 { 20 if(a.num<b.num) return true; 21 } 22 } 23 return false; 24 } 25 int main() 26 { 27 vector<stu> s1,s2,s3,s4; //定义容器 28 stu s0; 29 int n,l,h,k=0; 30 cin>>n>>l>>h; 31 while(n--){ 32 cin>>s0.num>>s0.d>>s0.c; 33 s0.sum=s0.c+s0.d; 34 if(s0.c>=l&&s0.d>=l) 35 { 36 k++; 37 if(s0.c>=h&&s0.d>=h) s1.push_back(s0); //将()内的元素放在容器尾部 38 } 39 } 40 sort(s1.begin(),s1.end(),comp); // 41 cout<<k<<endl; 42 vector<stu>::iterator itr; //遍历 43 for(itr=s1.begin();itr!=s1.end();itr++) 44 printf("%d %d %d\n",itr->num,itr->d,itr->c); 45 system("pause"); 46 return 0; 47 }