set

C++ STL 中的 set 是一种有序、不重复元素的容器,底层通常基于红黑树实现,具有以下特点: 自动排序:元素插入后会按默认(升序)或自定义规则自动排序 唯一元素:不允许重复值,插入重复元素会被忽略 快速查找:查找、插入、删除操作的时间复杂度为 O (log n) 基本用法示例:

运行
#include <iostream>
#include <set>  // 包含set头文件

int main() {
    // 1. 创建set容器(默认升序)
    std::set<int> mySet;

    // 2. 插入元素
    mySet.insert(30);
    mySet.insert(10);
    mySet.insert(20);
    mySet.insert(20);  // 重复元素,会被忽略

    // 3. 遍历元素(已自动排序)
    for (auto it = mySet.begin(); it != mySet.end(); ++it) {
        std::cout << *it << " ";  // 输出:10 20 30
    }
    std::cout << std::endl;

    // 4. 查找元素
    auto findIt = mySet.find(20);
    if (findIt != mySet.end()) {
        std::cout << "找到元素:" << *findIt << std::endl;
    }

    // 5. 删除元素
    mySet.erase(20);  // 删除值为20的元素

    // 6. 其他常用操作
    std::cout << "元素个数:" << mySet.size() << std::endl;  // 输出:2
    std::cout << "是否为空:" << (mySet.empty() ? "是" : "否") << std::endl;

    return 0;
}

常用变种:

std::multiset:允许重复元素的集合 std::unordered_set:无序集合,基于哈希表,查找速度更快(平均 O (1)


核心接口:

insert():插入元素 erase():删除元素 find():查找元素 size():获取元素个数 empty():判断是否为空 begin()/end():迭代器访问 适用于需要自动排序且无重复元素的场景,如去重、有序数据维护等。