• 关联式容器
  • 底层结构使用红黑树实现(二叉树->二叉搜索树->平衡二叉树->红黑树)
  • 自动排序
  • 不可以修改值,可以通过删除再插入的方式实现

自定义数据类型:

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;
}