set的底层为红黑树
/*
* @Author : Hi_Wind
* @Date : 2022-10-26 08:26:49
* @LastEditTime : 2022-10-26 08:33:16
* @FilePath : \text\text_set.cpp
*/
#include
using namespace std;
#include
class Heroes
{
public:
Heroes(string _name, int _age) : name(_name), age(_age) {}
friend class exCmp;
friend ostream &operator<<(ostream &O, const Heroes &os);
private:
string name;
int age;
};
//重载 << 操作符,让其直接输出 Heroes 对象信息
ostream &operator<<(ostream &O, const Heroes &os)
{
O << " " << os.name << " " << os.age;
return O;
}
// 定义外部比较器
class exCmp
{
public:
bool operator()(const Heroes &a, const Heroes &b) const
{
return a.age > b.age; // 按照年龄从大到小进行存放
}
};
int main()
{
set<Heroes, exCmp> hero;
hero.insert({"aa", 30});
hero.insert({"bb", 29});
hero.insert({"cc", 34});
for (auto &it : hero)
{
cout << it << endl;
}
return 0;
}
结果: