C++ STL中的 multimap::erase()
multimap::erase() 是C++ STL中的内置函数,用于从容器中删除元素。它可以用于删除指定位置的键、元素或给定范围内的元素。
1. 删除键的语法:
multimap_name.erase(key)
参数: 函数接受一个必需参数key,指定要在multimap容器中删除的键。
返回值: 函数不返回任何值。它会删除所有指定键的元素。
// C++ program to illustrate
// multimap::erase(key)
#include <bits/stdc++.h>
using namespace std;
int main()
{
// 初始化容器
multimap<int, int> mp;
// 随机插入元素
mp.insert({ 2, 30 });
mp.insert({ 1, 40 });
mp.insert({ 3, 60 });
mp.insert({ 2, 20 });
mp.insert({ 5, 50 });
// 打印元素
cout << "使用erase()前的multimap:\n";
cout << "键\t元素\n";
for (auto itr = mp.begin(); itr != mp.end(); ++itr) {
cout << itr->first
<< '\t' << itr->second << '\n';
}
// 使用给定键删除元素的函数
mp.erase(1);
mp.erase(2);
// 打印元素
cout << "\n使用erase()后的multimap:\n";
cout << "键\t元素\n";
for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) {
cout << itr->first
<< '\t' << itr->second << '\n';
}
return 0;
}
输出:
使用erase()前的multimap:
键 元素
1 40
2 30
2 20
3 60
5 50
使用erase()后的multimap:
键 元素
5 50
3 60
- 删除位置的语法:
multimap_name.erase(iterator position)
参数: 函数接受一个必需参数position,指定要删除元素的位置的迭代器引用。
返回值: 函数不返回任何值。
下面的程序说明了以上语法:
// C++ program to illustrate
// multimap::erase(position)
#include <bits/stdc++.h>
using namespace std;
int main()
{
// 初始化容器
multimap<int, int> mp;
// 随机插入元素
mp.insert({ 2, 30 });
mp.insert({ 1, 40 });
mp.insert({ 3, 60 });
mp.insert({ 2, 20 });
mp.insert({ 5, 50 });
// 打印元素
cout << "使用erase()前的multimap:\n";
cout << "键\t元素\n";
for (auto itr = mp.begin(); itr != mp.end(); ++itr) {
cout << itr->first
<< '\t' << itr->second << '\n';
}
// 使用给定位置删除元素的函数
auto it = mp.find(2);
mp.erase(it);
auto it1 = mp.find(5);
mp.erase(it1);
// 打印元素
cout << "\n使用erase()后的multimap:\n";
cout << "键\t元素\n";
for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) {
cout << itr->first
<< '\t' << itr->second << '\n';
}
return 0;
}
输出:
使用erase()前的multimap:
键 元素
1 40
2 30
2 20
3 60
5 50
使用erase()后的multimap:
键 元素
3 60
2 20
1 40
- **
清除指定范围的语法:
multimap_name.erase(iterator position1, iterator position2)
参数:
* position1-指向要删除元素的迭代器的参考值
* position2 – 指向要删除元素上限的迭代器的参考值
返回值:
该函数不返回任何内容。它删除指定迭代器范围内的所有元素。
下面的程序说明了上述语法:
//C ++程序演示
//multimap :: erase()
#include<bits / stdc ++.h>
using namespacestd;
int main()
{
//初始化容器
multimap<int,int> mp;
//随机顺序插入元素
mp.insert({2,30});
mp.insert({1,40});
mp.insert({3,60});
mp.insert({2,20});
mp.insert({5,50});
//打印元素
cout <<“使用erase()之前的多重映射为:\ n”;
cout <<“KEY \ tELEMENT \ n”;
for(auto itr = mp.begin(); itr!= mp.end(); ++itr){
cout << itr->first
<<'\ t'<second<< '\ n';
}
//用于在给定范围内擦除的函数
// find()返回元素所在的迭代器的引用
auto it1 = mp.find(2);
auto it2 = mp.find(5);
mp.erase(it1,it2);
//打印元素
cout <<“应用erase()后的多重映射为:\ n”;
cout <<“KEY \ tELEMENT \ n”;
for(auto itr = mp.crbegin(); itr!= mp.crend(); ++itr){
cout << itr->first
<<'\ t'<second<< '\ n';
}
return 0;
}
输出:
使用erase()之前的多重映射为:
KEY ELEMENT
1 40
2 30
2 20
3 60
5 50
应用erase()后的多重映射为:
KEY ELEMENT
5 50
1 40