需求;有一个类,类中有姓名和年龄成员变量,现在要按姓名升序排序,在姓名相同时按名字升序排序。
#include<iostream> #include<list> #include<algorithm> using namespace std; //加入const限制只读,并使用const_iterator class Person { public: Person(string name,int age) { this->name = name; this->age = age; } string name; age; }; 重载左移运算符 ostream& operator<<(ostream& cout,Person& p) { /*cout << "姓名:" << p.name << "," << "年龄:" << p.age;*/ return cout; } void printPerson(const list<Person>&for (list<Person>::const_iterator it = p.begin(); it != p.end(); it++) { cout <<"姓名:"<< (*it).name << \t"<<年龄:" <<(*it).age<< endl; } } bool myCompare(Person &p1,Person &p2) { 若年龄相同 if (p1.age == p2.age) { return p1.name < p2.name; } return p1.age <p2.age; } void test() { list<Person> lst; Person p1(tom",12); Person p2(jack); Person p3(sim16); Person p4(mike14); Person p5(bob11); Person p6(lol); lst.push_back(p1); lst.push_back(p2); lst.push_back(p3); lst.push_back(p4); lst.push_back(p5); lst.push_back(p6); cout << 排序前:" << endl; printPerson(lst); lst.sort(myCompare); cout << 排序后: endl; printPerson(lst); } main() { test(); system(pause"); return 0; }
輸出:
可以发现年龄已按升序排列,同时在年龄相同时,名字也是按首字母的顺序按升序排列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。