从 C++ Map 中移除元素

C++C++Beginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习如何使用 erase() 方法在 C++ STL 的 map 中移除元素。map 是一种以键值对(key-value pair)形式存储数据的容器。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("`C++`")) -.-> cpp/BasicsGroup(["`Basics`"]) cpp(("`C++`")) -.-> cpp/ControlFlowGroup(["`Control Flow`"]) cpp(("`C++`")) -.-> cpp/OOPGroup(["`OOP`"]) cpp(("`C++`")) -.-> cpp/IOandFileHandlingGroup(["`I/O and File Handling`"]) cpp(("`C++`")) -.-> cpp/StandardLibraryGroup(["`Standard Library`"]) cpp/BasicsGroup -.-> cpp/variables("`Variables`") cpp/BasicsGroup -.-> cpp/operators("`Operators`") cpp/ControlFlowGroup -.-> cpp/conditions("`Conditions`") cpp/OOPGroup -.-> cpp/class_methods("`Class Methods`") cpp/IOandFileHandlingGroup -.-> cpp/output("`Output`") cpp/IOandFileHandlingGroup -.-> cpp/files("`Files`") cpp/StandardLibraryGroup -.-> cpp/standard_containers("`Standard Containers`") subgraph Lab Skills cpp/variables -.-> lab-96229{{"`从 C++ Map 中移除元素`"}} cpp/operators -.-> lab-96229{{"`从 C++ Map 中移除元素`"}} cpp/conditions -.-> lab-96229{{"`从 C++ Map 中移除元素`"}} cpp/class_methods -.-> lab-96229{{"`从 C++ Map 中移除元素`"}} cpp/output -.-> lab-96229{{"`从 C++ Map 中移除元素`"}} cpp/files -.-> lab-96229{{"`从 C++ Map 中移除元素`"}} cpp/standard_containers -.-> lab-96229{{"`从 C++ Map 中移除元素`"}} end

创建 Map

main.cpp 文件中,通过在文件顶部包含以下头文件来创建一个 map 实例:

#include <iostream>
#include <bits/stdc++.h>

然后声明一个以整数为键和值的 map,如下所示:

map<int, int> m;

向 Map 中插入数据

使用 insert() 方法向 map 中插入随机数据。可以使用 make_pair() 方法将键值对分配给 map。

m.insert(make_pair(3, 9));
m.insert(make_pair(2, 4));
m.insert(make_pair(5, 25));
m.insert(make_pair(9, 81));
m.insert(make_pair(1, 1));

从 Map 中移除元素

使用 erase(x) 方法从 map 中移除键值为 x 的元素。如果该值不存在,则返回 0,否则返回 1。

int j = m.erase(5);

if(j == 1) {
    cout << "\nThe Map element with key 5 is deleted.";
} else {
    cout << "\nThe Map element with key 5 does not exist.";
}

你也可以移除 map 中不存在的键值,而不会导致程序崩溃。例如:

int k = m.erase(6);

if(k != 0){
    cout << "\n\nThe Map element with key 6 is deleted\n\n";
} else {
    cout << "\n\nThe Map element with key 6 does not exist.";
}

运行代码

要运行代码,请在终端中导航到包含 main.cpp 文件的目录,并输入以下命令进行编译和执行:

$ g++ main.cpp -o main
$ ./main

完整代码

以下是完整的代码供你参考:

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

int main()
{
    cout << "\n\nWelcome to LabEx :-)\n\n\n";
    cout << "===== 演示 Map 中 erase() 方法工作的程序(第 1 部分),使用 C++ ===== \n\n\n";

    cout << "*** erase(x) 方法删除键为 x 的 map 元素,如果找到则返回 1,否则返回 0。*** \n\n";

    // Map 声明(键和值均为整数的 Map)
    map<int, int> m;

    // 使用 insert() 方法填充元素。
    cout << "\n\n以随机顺序向 Map 中填充整数键值对。"; // Map 会自动按键的升序存储它们

    // make_pair() 用于将键值对插入到 map 中
    m.insert(make_pair(3, 9));
    m.insert(make_pair(2, 4));
    m.insert(make_pair(5, 25));
    m.insert(make_pair(9, 81));
    m.insert(make_pair(1, 1));

    cout << "\n\nMap 中的元素数量为: " << m.size();

    cout << "\n\nMap m 的元素为: ";

    map<int, int>::iterator i;
    int j = 0;

    for (i = m.begin(); i != m.end(); i++)
    {
        cout << "( " << i->first << ", " << i->second << " ) ";
    }

    // 查找键为 5 的 map 元素
    j = m.erase(5);

    if (j == 1)
    {
        cout << "\n\n键为 5 的 Map 元素已被删除。";
    }
    else
    {
        cout << "\n\n键为 5 的 Map 元素不存在。";
    }

    cout << "\n\n删除操作后,Map 中的元素数量变为: " << m.size();

    cout << "\n\n删除操作后,Map m 的元素为:  ";

    j = 0;

    for (i = m.begin(); i != m.end(); i++)
    {
        cout << "( " << i->first << ", " << i->second << " ) ";
    }

    j = m.erase(6);

    if (i != m.end())
    {
        cout << "\n\n键为 6 的 Map 元素已被删除\n\n";
    }

    else
    {
        cout << "\n\n键为 6 的 Map 元素不存在。";
    }

    cout << "\n\n\n";

    return 0;
}

总结

在本实验中,你首先创建了一个 map 并向其中填充数据。接着,你学习了如何使用 erase() 方法通过键值从 map 中移除元素。我们希望以上示例能帮助你理解如何在 C++ STL 中从 map 中移除元素。

您可能感兴趣的其他 C++ 教程