如何从 C++ 的 Map 中删除最后一个元素
如果我们想要从 Map 中删除最后一个元素,可以使用以下方法:
1. 使用 prev(mp.end()):prev 函数的作用是从给定的迭代器往后退一步。因此,使用 prev 函数与 mp.end() 一起将返回一个指向 Map 的最后一个元素的迭代器。
2. 实现代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
map<int, int> mp;
// 添加一些元素到 mp 中
mp[1] = 10;
mp[2] = 20;
mp[3] = 30;
cout << "删除最后一个元素之前的 mp 内容:\n";
for (auto it = mp.begin(); it != mp.end(); it++)
cout << it->first << " ==> "
<< it->second << "\n";
cout << "从 Map 中删除最后一个元素。\n";
mp.erase(prev(mp.end()));
cout << "删除最后一个元素之后的 mp 内容:\n";
for (auto it = mp.begin(); it != mp.end(); it++)
cout << it->first << " ==> "
<< it->second << "\n";
}
输出:
删除最后一个元素之前的 mp 内容:
1 ==> 10
2 ==> 20
3 ==> 30
从 Map 中删除最后一个元素。
删除最后一个元素之后的 mp 内容:
1 ==> 10
2 ==> 20
- 使用 iterator–:将一个迭代器设置为 mp.end(),然后使用 iterator– 来到 Map 中的最后一个元素,然后使用 erase 函数将其删除。
实现代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
map<int, int> mp;
// 添加一些元素到 mp 中
mp[1] = 10;
mp[2] = 20;
mp[3] = 30;
cout << "删除最后一个元素之前的 mp 内容:\n";
for (auto it = mp.begin(); it != mp.end(); it++)
cout << it->first << " ==> "
<< it->second << "\n";
cout << "从 Map 中删除最后一个元素。\n";
auto it = mp.end();
it--;
mp.erase(it);
cout << "删除最后一个元素之后的 mp 内容:\n";
for (auto it = mp.begin(); it != mp.end(); it++)
cout << it->first << " ==> "
<< it->second << "\n";
}
输出:
删除最后一个元素之前的 mp 内容:
1 ==> 10
2 ==> 20
3 ==> 30
从 Map 中删除最后一个元素。
删除最后一个元素之后的 mp 内容:
1 ==> 10
2 ==> 20