【C++中list容器案例之 对自定义数据类型进行排序】

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值