本关的编程任务是补全右侧代码片段main中Begin至End中间的代码,具体要求如下: 创建一个空的集合st,数据类型为int; 读取数据:第一行整数N,后面N行插入或删除操作,按指定要求输出相应信息; 遍历集合:首先在一行输出集合的大小,然后在下一行输出集合所有元素,中间空格隔开,末尾换行; 读取数据:整数M以及M次查找操作,并按指定要求输出相应信息; 清空集合 测试说明 平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。 以下是平台的测试样例: 测试输入: 7 insert 2 insert 7 insert 1 erase 3 erase 1 insert 5 erase 7 2 find 7 find 5 预期输出: 3 not in set print set: 2 2 5 find 7 not in set find 5 in set 0 输入格式: 第一行整数N 接下来N行插入或删除操作 整数M 接下来M行查找操作 输出格式: 插入删除阶段:若待删除的元素x不在集合中,则输出:x not in set 遍历集合阶段输出两行,第一行print set: set.size(),第二行集合所有元素x1 x2 x3 ... 查找阶段:若找到元素x,则输出find x in set,否则输出find x not in set 非学员输出0 // // main.cpp // step3 // // Created by ljpc on 2018/7/24. // Copyright © 2018年 ljpc. All rights reserved. // #include <iostream> #include <cstring> #include <algorithm> #include <set> using namespace std; int main(int argc, const char * argv[]) { // 请在这里补充代码,完成本关任务 /********* Begin *********/ // 1.创建一个空的集合st,数据类型为int // 2.读取数据:第一行整数n,后面n行插入或删除操作,并按指定要求输出 // 3.遍历集合st,并按指定要求输出 // 4.读取数据:整数m以及m次查找操作,并按指定要求输出 // 5.清空集合st /********* End *********/ printf("%d\n", int(st.size())); return 0; }
时间: 2025-06-12 11:31:26 浏览: 11
### 使用C++中的std::set实现集合操作
以下是使用C++中的`std::set`实现插入、删除、遍历和查找功能的代码示例。代码中包含了详细的注释,以帮助理解每个功能的实现方式[^1]。
```cpp
#include <iostream>
#include <set>
int main() {
// 创建一个空的整数集合
std::set<int> mySet;
// 插入元素到集合中
mySet.insert(10);
mySet.insert(5);
mySet.insert(20);
mySet.insert(15); // 自动排序后:{5, 10, 15, 20}
// 遍历集合并输出所有元素
std::cout << "集合中的元素: ";
for (const auto& elem : mySet) {
std::cout << elem << " ";
}
std::cout << std::endl;
// 查找元素是否存在
int searchValue = 15;
if (mySet.find(searchValue) != mySet.end()) {
std::cout << "元素 " << searchValue << " 存在于集合中。\n";
} else {
std::cout << "元素 " << searchValue << " 不存在于集合中。\n";
}
// 删除指定元素
int deleteValue = 10;
if (mySet.erase(deleteValue)) {
std::cout << "元素 " << deleteValue << " 已从集合中删除。\n";
} else {
std::cout << "元素 " << deleteValue << " 不存在于集合中。\n";
}
// 再次遍历集合并输出所有元素
std::cout << "删除后的集合中的元素: ";
for (const auto& elem : mySet) {
std::cout << elem << " ";
}
std::cout << std::endl;
return 0;
}
```
#### 插入操作
通过`insert`方法将元素插入到`std::set`中。由于`std::set`是一个有序容器,插入时会自动对元素进行排序[^1]。
#### 删除操作
通过`erase`方法删除指定的元素。如果元素存在,则返回值为1;否则返回值为0[^4]。
#### 查找操作
通过`find`方法查找指定的元素。如果找到该元素,则返回指向该元素的迭代器;否则返回`end()`。
#### 遍历操作
通过范围`for`循环或迭代器遍历集合中的所有元素。由于`std::set`内部维护了元素的顺序,因此遍历时元素会按照从小到大的顺序输出[^1]。
### 注意事项
- `std::set`不允许重复元素的存在。如果尝试插入已存在的元素,插入操作不会生效。
- 如果需要高效的无序集合操作,可以考虑使用`std::unordered_set`[^5]。
阅读全文