美文网首页
8.list排序案例

8.list排序案例

作者: lxr_ | 来源:发表于2021-04-18 10:16 被阅读0次
    #include<iostream>
    using namespace std;
    
    #include<list>
    #include<time.h>
    //将Person自定义数据类型进行排序,Person中属性有姓名,年龄,身高
    //排序规则:按照年龄进行排序,如果年龄相同按照身高进行降序排序
    
    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;
    };
    
    void PrintPerson(list<Person> l)
    {
        for (list<Person>::iterator it = l.begin(); it != l.end(); it++)
        {
            cout << "姓名:" << it->m_Name << "\t"
                << "年龄:" << it->m_Age << "\t"
                << "身高:" << it->m_Height << endl;
        }
    }
    //指定排序规则
    bool ComparePerson(Person& p1,Person& p2)
    {
        if (p1.m_Age != p2.m_Age)
            return p1.m_Age < p2.m_Age;//按照年龄升序排序
        else
            return p1.m_Height > p2.m_Height;//年龄相同,按照身高升序排序
    
    }
    void test0801()
    {
        list<Person> l;
    
        //准备数据
        for (int i = 0; i < 10; i++)
        {
            string nameSeed = "ABCDEFGHIJ";
            string name = "学生";
            name += nameSeed[i];
    
            int age = rand() % 81 + 20;
    
            int height = rand() % 31 + 160;
    
            Person p(name, age, height);
    
            l.push_back(p);
        }
    
        PrintPerson(l);
    
        //排序
        cout << "排序后:" << endl;
        l.sort(ComparePerson);
        PrintPerson(l);
    }
    int main()
    {
        srand((unsigned int)time(NULL));
    
        test0801();
    
        system("pause");
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:8.list排序案例

          本文链接:https://www.haomeiwen.com/subject/hnbklltx.html