Person中的属性有姓名、年龄、身高
排序规则:按照年龄大小进行升序,如果年龄相同按照身高排序
示例:
#include<iostream>
using namespace std;
#include<list>
#include<string>
//Person类
class Person{
public:
string m_Name; //姓名
int m_Age; //年龄
int m_Height; //身高
Person(string name,int age,int height){ //构造函数
this->m_Age = age;
this->m_Height = height;
this->m_Name = name;
}
};
//排序规则
bool comparePerson(Person &p1,Person &p2){
if(p1.m_Age==p2.m_Age){ //年龄相等按身高降序排序
return p1.m_Height>p2.m_Height;
}
else //如果年龄不相等按照年龄升序
return p1.m_Age<p2.m_Age;
}
void test01(){
list<Person>L1; //创建容器
//准备数据
Person p1("刘备",35,175);
Person p2("曹操",45,180);
Person p3("孙权",40,170);
Person p4("赵云",25,190);
Person p5("张飞",35,160);
Person p6("关羽",35,200);
//插入数据
L1.push_back(p1);
L1.push_back(p2);
L1.push_back(p3);
L1.push_back(p4);
L1.push_back(p5);
L1.push_back(p6);
//打印未排序前数据
cout<<"排序前:" <<endl;
for(list<Person>::const_iterator it=L1.begin();it!=L1.end();it++){
cout<<"姓名:"<<(*it).m_Name<<" 年龄:"<<(*it).m_Age<<" 身高:"<<(*it).m_Height<<endl;
}
//排序后
cout<<"-----------------------------------"<<endl;
cout<<"排序后 : "<<endl;
L1.sort(comparePerson); //按照指定规则排序
//打印排序后数据
for(list<Person>::const_iterator it=L1.begin();it!=L1.end();it++){
cout<<"姓名:"<<(*it).m_Name<<" 年龄:"<<(*it).m_Age<<" 身高:"<<(*it).m_Height<<endl;
}
}
int main(){
test01();
system("pause");
return 0;
}
输出样式: