案例描述:将Perspn自定义数据类型进行排序,Person中属性有姓名、年龄、身高
排序规则:按照年龄进行升序,如果年龄相同按照身高进行降序
代码示例
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- 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
& p) - {
- for (list
::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
Plist = {p1,p2,p3,p4,p5,p6}; -
- cout<< "排序前: "<< endl;
- print(Plist);
- Plist.sort(comparePerson);
- cout<< "-------------------"<< endl;
- cout<< "排序后: "<< endl;
- print(Plist);
-
- return 0;
- }
编译运行
