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

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



