从 C++ Map 中移除元素

C++Beginner
立即练习

介绍

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

创建 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 中移除元素。