#D1. STL-set笔记

STL-set笔记

当前没有测试数据。

5. set(集合,自动去重排序)

用途

存储不重复的元素,自动按从小到大排序(如需要去重或有序无重复集合场景)。

核心定义方式

set需指定元素类型,元素需支持比较运算,默认去重并升序,定义方式如下:

定义方式 说明 示例
默认构造 创建空的set,元素数量为0 set<int> st;
拷贝构造 用已有的set创建新set set<int> st1; set<int> st2(st1);
列表初始化 用元素列表直接赋值,自动去重排序 set<int> st = {3,1,2,3}; // 实际存储1,2,3
指定排序方式 自定义元素排序规则(如降序),需用greater set<int, greater<int>> st; // 元素降序

set常用函数

函数名 功能说明 示例
insert(x) ★ 插入元素x,自动去重排序 st.insert(3);
count(x) ★ 判断x是否存在,返回1或0 if (st.count(3)) { ... }
erase(x/it) ★ 删除指定元素或迭代器指向的元素 st.erase(3);
size()/empty()/clear() ★ 获取元素个数/判断容器是否为空/清空容器 st.clear();

set的三种遍历方式


// 方式1:迭代器遍历(最基础) 
    cout << "方式1:普通迭代器遍历" << endl;
    for (set<int>::iterator it = s.begin(); it != s.end(); ++it) {
        cout << *it << " ";  // 解引用迭代器获取元素
    }
    cout << endl ;

// 方式2:范围for遍历(C++11及以上,最简洁) 
    for (int num : s) {  // 自动遍历每个元素,无需手动管理迭代器
        cout << num << " ";
    }
    cout << endl << endl;


// 方式三:扩展:C++11 自动推导迭代器(简化方式1)
    for (auto it = s.begin(); it != s.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;