#include<iostream> using namespace std; #include<stack> #include<string> #include<list> //list容器 排序案例 對於自定義數據類型 做排序 //按照年齡進行升序,如果年齡相同按照身高進行降序 class Person { public: Person(string name, int age, int height) { this->m_Name = name; this->m_Age = age; this->m_Height = height; } string m_Name; //姓名 int m_Age; //年齡 int m_Height; //身高 }; //指定排序規則 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>L;//創建容器 //准備數據 Person p1("劉備", 35, 175); Person p2("曹操", 45, 180); Person p3("孫權", 40, 170); Person p4("趙雲", 25, 190); Person p5("張飛", 35, 160); Person p6("關羽", 35, 200); //插入數據 L.push_back(p1); L.push_back(p2); L.push_back(p3); L.push_back(p4); L.push_back(p5); L.push_back(p6); for (list<Person>::iterator it = L.begin(); it != L.end(); it++) { cout << "姓名;" << (*it).m_Name << " 年齡:" << it->m_Age << " 身高:" << it->m_Height << endl; } //排序 cout << "-------------------------------------" << endl; cout << "排序后: " << endl; L.sort(comparePerson); for (list<Person>::iterator it = L.begin(); it != L.end(); it++) { cout << "姓名;" << (*it).m_Name << " 年齡:" << it->m_Age << " 身高:" << it->m_Height << endl; } } int main() { test01(); //test02(); system("pause"); return 0; }