C++set添加删除元素
时间: 2025-04-20 18:01:27 浏览: 34
### C++ `set` 容器中元素的添加和删除
#### 添加元素
在C++标准库中,`std::set` 是一种关联容器,用于存储唯一键值并自动保持有序。为了向集合中插入单个元素,可以使用成员函数 `insert()`。
```cpp
#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> mySet;
// 插入单个元素
mySet.insert(10);
mySet.insert(20);
mySet.insert(30);
// 打印当前集合的内容
for (const auto& elem : mySet) {
cout << elem << " ";
}
}
```
上述代码展示了如何利用 `insert()` 函数将整数类型的三个不同数值加入到名为 `mySet` 的集合里[^2]。
对于批量插入多个连续范围内的数据,则可以通过传递两个迭代器给 `insert()` 来实现:
```cpp
vector<int> vec = {4, 5, 6};
mySet.insert(vec.begin(), vec.end());
```
这段程序片段说明了怎样一次性把来自另一个序列(这里是 `vec` 向量)的所有项目移至目标集合作业区之内[^3]。
#### 删除元素
当需要从 `std::set` 移除特定项时,同样依赖于其提供的接口——`erase()` 成员方法。此功能支持三种形式的操作模式:依据位置、基于区间以及按照具体值得方式来进行清理工作。
- **按位置删除**:提供指向待删对象的有效迭代器作为参数;
```cpp
auto pos = mySet.find(20); // 寻找含有指定值的位置
if (pos != mySet.end()) {
mySet.erase(pos); // 如果存在则执行擦除动作
}
```
- **按区间删除**:给出起始与终止边界间的左闭右开子集;
```cpp
mySet.erase(mySet.lower_bound(1), mySet.upper_bound(9));
```
- **按值删除**:直接传入欲消除的目标实体本身即可完成任务。
```cpp
size_t count = mySet.erase(30); // 返回受影响条目的数量
```
值得注意的是,在实际应用过程中如果想要替换某个已存在的记录而不破坏原有顺序关系的话,应该遵循先除去旧版本再追加更新版的原则,因为 `std::set` 不允许就地更改内部节点的数据字段[^4]。
阅读全文
相关推荐


















