c++ list排序案例


#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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM