Menu
CoddyTech

删除元素

本课属于 Coddy C++ 学习旅程的“逻辑与流程”单元。第 38 课,共 56 课。

有时,你需要在不再需要集合中的元素时将其删除。.erase() 方法可以通过提供元素的值来删除指定元素。

下面介绍如何从集合中删除一个元素:

std::set<int> numbers = {10, 20, 30, 40};
numbers.erase(20);  // 删除元素 20

调用 .erase(20) 后,集合中只会包含 {10, 30, 40}。如果你尝试删除集合中不存在的元素,不会发生任何变化,集合保持不变,也不会出现错误。

这样一来,即使你不确定元素是否存在,也可以安全地使用 .erase()。当你需要根据用户输入或程序逻辑移除特定项,以保持集合整洁时,这尤其有用。

challenge icon

挑战

简单

创建一个程序,演示如何使用 std::set 的 .erase() 方法移除元素。这个挑战将测试你对如何安全地从集合中移除指定元素并观察结果的理解。

程序将收到以下输入:

  • 一个整数 n,表示要添加到集合中的初始元素数量
  • 接着是 n 个要插入集合的整数
  • 一个整数 m,表示要移除的元素数量
  • 接着是 m 个整数,表示要从集合中移除的元素

你的程序应当:

  1. 创建一个空的 std::set<int>
  2. 读取要添加的元素数量,并使用 .insert() 将这些元素插入集合
  3. 所有元素插入后,输出集合的初始大小
  4. 读取要移除的元素数量
  5. 对于每个要移除的元素,使用 .erase() 尝试移除
  6. 每次尝试移除后,输出集合的当前大小
  7. 最后,遍历集合中剩余的元素,并按排序后的顺序输出

请使用以下确切的输出格式:

集合的初始大小:

Initial size: [size]

每次尝试移除后:

After removing [number]: size = [current_size]

最终剩余的元素:

Remaining elements: [element1] [element2] [element3] ...

请记住,.erase() 可以安全地处理移除集合中不存在的元素的尝试,集合会保持不变,也不会发生错误。使用基于范围的 for 循环输出剩余元素。由于集合会按顺序保存元素,它们会自动按排序后的顺序显示。

亲手试试

#include <iostream>
#include <set>
using namespace std;

int main() {
    // 读取要添加的元素数量
    int n;
    cin >> n;
    
    // 创建一个空集合
    set<int> mySet;
    
    // 读取并插入 n 个元素
    for (int i = 0; i < n; i++) {
        int element;
        cin >> element;
        // 将 element 插入集合
    }
    
    // 读取要移除的元素数量
    int m;
    cin >> m;
    
    // TODO: 在下方编写你的代码
    // 1. 输出集合的初始大小
    // 2. 对每个要移除的元素,使用 .erase(),并在每次移除后输出集合的大小
    // 3. 输出集合中剩余的元素
    
    return 0;
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: C++ 在线编译器