【按年龄升序排,年龄相同学号升序拍】
#include <iostream>
#include <list>//链表容器
#include <time.h>
#include <algorithm>
using namespace std;
class stu {
public:
stu(string name, int xuehao, int age) {
this->name = name;
this->xuehao = xuehao;
this->age = age;
}
string name;
int xuehao;
int age;
};
void tianjia(int num, list <stu>& s1) {
for (int i = 0; i < num; i++) {
cout << "输入" << endl;
string name;
int xuehao, age;
cout << "姓名:";
cin >> name;
cout << "学号:";
cin >> xuehao;
cout << "年龄:";
cin >> age;
stu s(name,xuehao,age);
s1.push_back(s);
}
}
void show(list <stu> s1) {
cout << "_______学生信息表_______" << endl;
for (auto a : s1) {
cout << " 姓名:"<< a.name<<endl;
cout << " 学号:"<< a.xuehao<<endl;
cout << " 年龄:"<<a. age<<endl;
cout << "_______________________" << endl;
}
}
bool cmp(stu &a,stu &b) {
if (a.age == b.age) {
return a.xuehao < b.xuehao;
}
return a.age < b.age;
}
void paixu(list <stu> &s1) {
//自定义数据类型排序不能仅仅是sort
s1.sort(cmp);
}
int main() {
list <stu> s1;
int num;
cout << "添加学生个数:";
cin >> num;
tianjia(num, s1);
system("cls");
show(s1);
system("pause");
system("cls");
paixu(s1);
show(s1);
return 0;
}