比较vector和list的排序算法

本文展示了一个使用C++进行自定义对象排序的例子,通过重载小于运算符实现复杂数据结构的排序,并演示了如何在vector和list容器中应用sort函数。

#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>
#include <list>

class aaa

{
public:
        aaa(int a, int b, int c):a(a),b(b),c(c){};

        bool operator <(const aaa &m)

        {
            if (a == m.a)
            {
               if (b == m.b)
               {
                    return c < m.c;
               }
               return b < m.b;
            }
           return a < m.a;
      }

      int a, b, c;
};

int main()
{
       vector<aaa> vctaaa;
        aaa n4(1,5,2);
        vctaaa.push_back(n4);
        aaa n5(2,1,4);
        vctaaa.push_back(n5);
        aaa n1(1,2,3);
        vctaaa.push_back(n1);
        aaa n2(1,2,4);
        vctaaa.push_back(n2);
        aaa n6(1,2,1);
        vctaaa.push_back(n6);
        aaa n3(1,1,3);
        vctaaa.push_back(n3);

        for (vector<aaa>::const_iterator i=vctaaa.begin(); i!=vctaaa.end(); i++)
        {
                cout<<"("<<i->a<<", "<<i->b<<", "<<i->c<<")"<<endl;
        }

        cout<<"after sort..."<<endl;
        sort(vctaaa.begin(), vctaaa.end());

        for (vector<aaa>::const_iterator i=vctaaa.begin(); i!=vctaaa.end(); i++)
        {
            cout<<"("<<i->a<<", "<<i->b<<", "<<i->c<<")"<<endl;
        }

        cout<<"----------------------------------"<<endl;
        list<aaa> listaaa;
        aaa m4(1,5,2);
        listaaa.push_back(m4);
        aaa m5(2,1,4);
        listaaa.push_back(m5);
        aaa m1(1,2,3);
        listaaa.push_back(m1);
        aaa m2(1,2,4);
        listaaa.push_back(m2);
        aaa m6(1,2,1);
        listaaa.push_back(m6);
        aaa m3(1,1,3);

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        listaaa.push_back(m3);

        for (list<aaa>::const_iterator i=listaaa.begin(); i!=listaaa.end(); i++)
        {
             cout<<"("<<i->a<<", "<<i->b<<", "<<i->c<<")"<<endl;
        }

        cout<<"after sort..."<<endl;
        listaaa.sort();

        for (list<aaa>::const_iterator i=listaaa.begin(); i!=listaaa.end(); i++)
        {
            cout<<"("<<i->a<<", "<<i->b<<", "<<i->c<<")"<<endl;
        }

        return 0 ;
       }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值