问题简述:使用set容器,存储Person类型的数据,Person类中包含姓名以及年龄,要求在输出数据时按照年龄从大到小输出。
这里需要注意的是要对()进行重载!
以下是实现代码:
#include<iostream>
#include<set>
#include<string>
using namespace std;
class Person
{
public:
Person(string name, int age)
{
this->m_Name = name;
this->m_Age = age;
}
string m_Name;
int m_Age;
};
class myComparePerson
{
public:
bool operator()(const Person& p1, const Person& p2)const
{
return p1.m_Age > p2.m_Age;
}
};
void test01()
{
set<Person, myComparePerson> s;
Person p1("A", 14);
Person p2("B", 12);
Person p3("C", 18);
Person p4("D", 41);
Person p5("E", 4);
s.insert(p1);
s.insert(p2);
s.insert(p3);
s.insert(p4);
s.insert(p5);
for (set<Person, myComparePerson>::iterator it = s.begin(); it != s.end(); it++)
{
cout << "姓名:" << it->m_Name << " " << "年龄:" << it->m_Age << endl;
}
}
int main(void)
{
test01();
system("pause");
return 0;
}