案例描述:将Perspn自定义数据类型进行排序,Person中属性有姓名、年龄、身高
排序规则:按照年龄进行升序,如果年龄相同按照身高进行降序
代码示例
cpp
#include <iostream>
#include <string.h>
#include <iterator>
#include <vector>
#include <string>
#include <algorithm>
#include <deque>
#include <bitset>
#include <ctime>
#include <stack>
#include <queue>
#include <list>
using namespace std;
class person
{
public:
person(string name, int age, int height)
{
this->name = name;
this->age = age;
this->height = height;
}
int age;
string name;
int height;
};
bool comparePerson(person &p1,person &p2)
{
//按照年龄进行升序
if (p1.age == p2.age)
{
//如果年龄相同按照身高进行降序
return p1.height > p2.height;
}
else
{
return p1.age < p2.age;
}
}
void print(list<person>& p)
{
for (list<person>::iterator it = p.begin(); it != p.end(); it++)
{
cout << "姓名: " << it->name << " 年龄: " << it->age << " 身高: " << it->height << endl;
}
}
int main()
{
person p1("赵信", 85, 166);
person p2("盖伦", 67, 157);
person p3("天海", 67, 186);
person p4("斯沃特", 26, 130);
person p5("安其拉", 18, 210);
person p6("猴子", 2, 60);
list<person> Plist = {p1,p2,p3,p4,p5,p6};
cout<< "排序前: "<< endl;
print(Plist);
Plist.sort(comparePerson);
cout<< "-------------------"<< endl;
cout<< "排序后: "<< endl;
print(Plist);
return 0;
}
编译运行