自定义数据类型改变默认排序规则排序
利用仿函数
代码语言:javascript复制#include<iostream>
using namespace std;
#include<set>
//自定义数据类型排序
class per
{
public:
per(string Name,int Age):name(Name),age(Age){}
string name;
int age;
};
class myCompare
{
public:
//利用仿函数,重载()
bool operator()(const per &per1, const per &per2)const
{
//降序
return per1.age>per2.age;
}
};
void p1(const set<per,myCompare>& s)
{
for (set<per,myCompare>::const_iterator it = s.begin(); it != s.end(); it )
{
cout << "姓名: " << (*it).name << " 年龄: " << (*it).age << endl;
}
cout << endl;
}
void test()
{
per person1("第一个人", 23);
per person2("第二个人", 19);
per person3("第三个人", 26);
cout << "set容器改变默认排序规则: " << endl;
set<per,myCompare> s2;
s2.insert(person1);
s2.insert(person2);
s2.insert(person3);
p1(s2);
}
int main()
{
test();
system("pause");
return 0;
}