- C24yechenxi's blog
set用法
- @ 2025-10-1 15:53:39
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():迭代器访问
适用于需要自动排序且无重复元素的场景,如去重、有序数据维护等。