1. 需求
案例描述:将Person自定义数据类型进行排序,Person中属性有姓名、年龄、身高
排序规则:按照年龄进行升序,如果年龄相同按照身高进行降序
2. C++代码实现
#include <algorithm>
#include <iostream>
#include <string>
#include <random>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <deque>
#include <fstream>
#include <list>
using namespace std;
class Person {
public:
Person(const string &name,const int &age,const int &height) {
m_name = name;
m_age =age;
m_height = height;
}
string m_name;
int m_age;
int m_height;
};
void printList(list<Person> &l1) {
for (const auto& i : l1) {
cout << i.m_name << ", " << i.m_age << ", " << i.m_height << endl;
}
}
list<Person> createMem() {
list<Person> l1;
Person p1("a", 35, 175);
Person p2("b", 45, 180);
Person p3("c", 40, 170);
Person p4("d", 25, 190);
Person p5("e", 35, 160);
Person p6("f", 35, 200);
Person* persons[] = {&p1, &p2, &p3, &p4, &p5, &p6};
for (auto i: persons) {
l1.push_back(*i);
}
return l1;
}
bool mySort(Person &p1, Person &p2) {
if (p1.m_age < p2.m_age) {
return true;
}
if (p1.m_age == p2.m_age) {
if (p1.m_height <= p2.m_height) {
return true;
}
return false;
}
return false;
}
void test01() {
list<Person> l1 = createMem();
l1.sort(mySort);
printList(l1);
}
int main()
{
// list容器的排序
test01();
// system("pause");
return 0;
}
3. 输出
d, 25, 190
e, 35, 160
a, 35, 175
f, 35, 200
c, 40, 170
b, 45, 180

9373

被折叠的 条评论
为什么被折叠?



