要求用到链表连接每个学生
代码
#include
#include
using namespace std;
class Student
{
friend istream& operator>>(istream&in,Student &ra);
friend bool cmp(Student &a, Student &b);
public:
Student(){}
Student(string n,int a,float s):name(n),age(a),score(s){}
void show()
{
cout<(istream&in,Student &ra)
{
in>>ra.name>>ra.age>>ra.score;
return in;
}
bool cmp(Student &a, Student &b)
{
if(a.age>mode;
switch (mode) {
case Mode_Add:
{
Student s;
cout<<"name age score:";
cin>>s; //operator>>(cin,s);
list.push_back(s);
}
break;
case Mode_Show:
{
for(std::list::iterator it=list.begin(); it!=list.end(); it++)
{
it->show();
}
}
break;
case Mode_Sort:
list.sort(cmp);
break;
case Mode_Delete:
{
cout<<"please input del name:";
string delName;
cin>>delName;
std::list::iterator it;
for(it=list.begin(); it!=list.end(); it++)
{
if(it->getName() == delName)
{
//删除
cout<<"it->getName():"<getName()< list;
};
int main()
{
Application app;
return app.exec();
}
注意
-
list.sort(cmp);是调用bool cmp(Student &a, Student &b)这个函数,cmp是一个函数对象,等于回调这个函数,函数必须要bool cmp(const Type1 &a, const Type2 &b)这种格式
-
在排序函数中if(a.age的话是降序
-
list.erase(it);擦除迭代器后就不能++了,所以要break,所以只能删除一个