当前位置:   article > 正文

C++——list容器排序案例

C++——list容器排序案例

案例描述: 将Person自定义数据类型进行排序,Person中属性有姓名、年龄、
身高排序规则: 按照年龄进行升序,如果年龄相同按照身高进行降序

  1. #include<iostream>
  2. using namespace std;
  3. #include<string>
  4. #include<list>
  5. //list容器 排序案例 对于自己定义数据类型 做排序
  6. //按照年龄进行升序,如果年龄相同按照身高进行降序
  7. class Person
  8. {
  9. public:
  10. Person(string name, int age, int height)
  11. {
  12. this->m_Name = name;
  13. this->m_Age = age;
  14. this->m_Height = height;
  15. }
  16. string m_Name;//姓名
  17. int m_Age; //年龄
  18. int m_Height; //身高
  19. };
  20. //指定排序规则
  21. bool comparePerson(Person& p1, Person& p2)
  22. {
  23. //按照年龄 升序
  24. if (p1.m_Age == p2.m_Age)
  25. {
  26. //年龄相同 按照身高降序
  27. return p1.m_Height > p2.m_Height;
  28. }
  29. else
  30. {
  31. return p1.m_Age < p2.m_Age;
  32. }
  33. }
  34. void test01()
  35. {
  36. list<Person>L;//创建容器
  37. //准备数据
  38. Person p1("李四", 35, 175);
  39. Person p2("老王", 45, 180);
  40. Person p3("张三", 40, 170);
  41. Person p4("老李", 25, 160);
  42. Person p5("老五", 35, 160);
  43. Person p6("狗蛋", 35, 200);
  44. //插入数据
  45. L.push_back(p1);
  46. L.push_back(p2);
  47. L.push_back(p3);
  48. L.push_back(p4);
  49. L.push_back(p5);
  50. L.push_back(p6);
  51. for (list<Person>::iterator it = L.begin(); it != L.end(); it++)
  52. {
  53. cout << "姓名: " << (*it).m_Name << "年龄:" << it-> m_Age << "身高:" << it->m_Height << endl;
  54. }
  55. L.sort(comparePerson);//对于自定义排序我们需要指定他的规则
  56. for (list<Person>::iterator it = L.begin(); it != L.end(); it++)
  57. {
  58. cout << "姓名: " << (*it).m_Name << "年龄:" << it->m_Age << "身高:" << it->m_Height << endl;
  59. }
  60. }
  61. int main()
  62. {
  63. system("pause");
  64. return 0;
  65. }

仅个人看视频笔记与理解,如有误可指出谢谢

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/528975
推荐阅读
相关标签
  

闽ICP备14008679号