赞
踩
C++类对象按照某一个(或几个)类属性进行排序很早以前就学习过,但是时间久了开始有点忘了,现在就把最常用的一种方法进行以下总结。
现在有一个学生管理系统,用来记录每位同学的姓名、学号、以及成绩。现输入n位同学的信息,然后分别输出成绩最高和最低的学生姓名以及学号。
#include<iostream> #include<string> #include<algorithm> using namespace std; class Student{ public: string name; string id; int score; //类对象排序函数 friend bool operator <(Student &a,Student &b) { return a.score!=b.score?a.score<b.score:a.score>b.score; } }; int main() { int n=0; cin>>n; Student stu[n]; string a,b; int s=0; for(int i=0;i<n;i++) { cin>>a>>b>>s; stu[i].name=a; stu[i].id=b; stu[i].score=s; } sort(stu,stu+n); //执行排序操作 cout<<stu[n-1].name<<" "<<stu[n-1].id<<endl; cout<<stu[0].name<<" "<<stu[0].id; return 0; }
∙ \bullet ∙ 需要在类内部重构函数,声明如下:
friend bool operator <(Student &a,Student &b)
函数内部返回比较格式。
∙ \bullet ∙ 在主函数中生成类数组用来存放信息:
Student stu[n];
∙ \bullet ∙ 书写排序函数sort:
sort(stu,stu+n);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。