#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;
相关
在以下作业中: