- 关联式容器
- 底层结构使用红黑树实现(二叉树->二叉搜索树->平衡二叉树->红黑树)
- 自动排序
- 不可以修改值,可以通过删除再插入的方式实现
自定义数据类型:
class Person{
public:
Person(string name, int age, int height){
this->m_name = name;
this->m_age = age;
this->m_height = height;
}
bool operator<(const Person &p2) const{ // 注意:函数和形参都要添加 const 修饰符
if(this->m_age == p2.m_age){
return this->m_height > p2.m_height;
}
return this->m_age < p2.m_age;
}
void printPerson()const{
cout << "姓名:" << this->m_name << " 年龄:" << this->m_age << " 身高:" << this->m_height << endl;
}
private:
string m_name;
int m_age;
int m_height;
};
int main()
{
set<Person> lp;
lp.insert(Person("刘备", 35 , 175));
lp.insert(Person("曹操", 45 , 180));
lp.insert(Person("孙权", 40 , 170));
lp.insert(Person("赵云", 25 , 190));
lp.insert(Person("张飞", 35 , 160));
lp.insert(Person("关羽", 35 , 200));
for(const auto &p : lp){
p.printPerson();
}
return 0;
}