list_自定义类型排序
#include <iostream>
#include <list>
using namespace std;
#include <iterator>
#include <algorithm>
#include <functional>
#include <string>
class student
{
public:
student(string num, string name, string University, int TotalGrade) :
num(num), name(name), University(University), TotalGrade(TotalGrade)
{}
friend ostream& operator<< (ostream& out, student stu);
bool operator<(student& stu)
{
return TotalGrade < stu.TotalGrade;
}
public:
string num;
string name;
string University;
int TotalGrade;
};
ostream& operator<< (ostream& out, student stu)
{
out << stu.num << "\t" << stu.name << "\t"
<< stu.University << "\t" << stu.TotalGrade << endl;
return out;
}
//函数对象
template <class _Arg1, class _Arg2, class _Result = bool >
class Compare
{
public:
_Result operator()(_Arg1& v1, _Arg2& v2)
{
return v1 < v2; //v1.operator<(v2)
}
};
//普通函数
template <typename _Arg1, typename _Arg2, typename _Result = bool >
_Result MyCompare(_Arg1& v1, _Arg2& v2)
{
return v1 < v2;
}
int main()
{
list<student> List;
student s1("101", "ZhouQi", "QingHua", 670);
student s2("102", "WangWu", "Peking", 695);
student s3("103", "SunEr", "FuDan", 664);
student s4("104", "GaoLiu", "ZheDa", 656);
student s5("105", "LongYi", "LanDa", 634);
List.push_back(s1);
List.push_back(s4);
List.push_back(s3);
List.push_back(s5);
List.push_back(s2);
cout << "-------------Before Sort-------------" << endl;
for (list<student>::iterator it = List.begin(); it != List.end(); it++)
cout << *it;
//调用list的第二个排序函数!实现自定义类型的排序!
//List.sort(Compare<student, student>()); //函数对象实现排序
List.sort(MyCompare<student, student>); //普通函数实现排序
cout << "------------After Sort--------------" << endl;
for (list<student>::iterator it = List.begin(); it != List.end(); it++)
cout << *it;
return 0;
}
***
版权声明:本文为TianYanRen111原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。