一.确定set容器中存放的对象所属的类
class Person
{
public:
Person()
{
m_name = "";
m_age = 0;
}
Person(string name, int age)
{
m_name = name;
m_age = age;
}
//成员变量有string和int类型
//对应姓名和年龄
string m_name;
int m_age;
};
二.新建一个自定义排序类 实现仿函数(重载小括号)
优先按照年龄排序 如果相同 则按照姓名字典序排序
class setMyCompare
{
public:
//注意加上const表示这是常函数
//我们希望 优先按照年龄排序 如果相同 则按照姓名字典序排序
bool operator()(const Person& a, const Person& b)const
{
if (a.m_age != b.m_age)return a.m_age < b.m_age;
return a.m_name < b.m_name;
}
};
三.在主函数中使用set容器
int main()
{
//个性化的/自定义的/修饰过的set容器
//第一个是数据类型(自定义的对象)
//第二个是自定义排序类
set<Person,setMyCompare>s;
Person p1("b", 10);
Person p2("c", 10);
Person p3("a", 20);
s.insert(p1);
s.insert(p2);
s.insert(p3);
for (auto it : s)
cout << it.m_name << ' ' << it.m_age << endl;
return 0;
}
四.查看运行结果
b 10
c 10
a 20