介绍
在本实验中,你将学习如何使用 erase()
方法在 C++ STL 的 map 中移除元素。map 是一种以键值对(key-value pair)形式存储数据的容器。
在本实验中,你将学习如何使用 erase()
方法在 C++ STL 的 map 中移除元素。map 是一种以键值对(key-value pair)形式存储数据的容器。
在 main.cpp
文件中,通过在文件顶部包含以下头文件来创建一个 map 实例:
#include <iostream>
#include <bits/stdc++.h>
然后声明一个以整数为键和值的 map,如下所示:
map<int, int> m;
使用 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));
使用 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 中移除元素。