C++ STL中unordered_multimap的erase函数
unordered_multimap::erase()是C++ STL中的内置函数,可按位置和按键删除给定范围内的元素。在C++ STL中有三个变体的该函数。
定义了unordered_multimap的以下类型的erase()函数。
- 按位置 :它通过给定位置从unordered_multimap中删除元素,并返回指向已删除元素之后的位置的迭代器。
- 按键: 它通过键删除元素。它返回已删除的元素数量。
- 按范围: 它接收迭代器first和last,并删除它们之间的所有元素,包括first但不包括last。它返回一个指向已删除元素之后的位置的迭代器。
语法:
- iterator erase(iterator position)
- size erase(key_type& k)
- iterator erase(iterator first, iterator last);
下面的程序解释了上述函数。
示例1:
//C++程序演示了unordered_multimap::erase()函数
#include <bits/stdc++.h>
using namespace std;
int main()
{
// unordered_multimap的声明
unordered_multimap<char, int> sample;
// 插入元素
sample.insert({ 'a', 2 });
sample.insert({ 'b', 4 });
sample.insert({ 'c', 8 });
sample.insert({ 'd', 10 });
sample.insert({ 'c', 4 });
sample.insert({ 'e', 4 });
sample.insert({ 'f', 4 });
cout << " unordered_multimap的元素是: \n";
for (auto& x : sample)
cout << x.first << " : " << x.second << endl;
// 按位置删除元素
sample.erase(sample.begin());
// 删除位置后打印
cout << " 按位置删除后的unordered_multimap的元素是: \n";
for (auto& x : sample)
cout << x.first << " : " << x.second << endl;
// 按元素删除
sample.erase('c');
// 删除元素后打印
cout << " 按名称删除后的unordered_multimap的元素是: \n";
for (auto& x : sample)
cout << x.first << " : " << x.second << endl;
// 按范围删除
sample.erase(sample.find('e'), sample.end());
// 删除范围后打印
cout << " 按范围删除后的unordered_multimap的元素是: \n";
for (auto& x : sample)
cout << x.first << " : " << x.second << endl;
return 0;
}
unordered_multimap的元素是:
f : 4
b : 4
a : 2
c : 4
c : 8
d : 10
e : 4
按位置删除后的unordered_multimap的元素是:
b : 4
a : 2
c : 4
c : 8
d : 10
e : 4按名称删除后的unordered_multimap的元素是:
b : 4
a : 2
d : 10
按范围删除后的unordered_multimap的元素是:
b : 4
a : 2
d : 10
示例2:
// C++程序演示unordered_multimap :: erase()函数
#include <bits/stdc++.h>
using namespace std;
int main()
{
// 声明unordered_multimap
unordered_multimap<int, int> sample;
// 插入元素
sample.insert({ 1, 2 });
sample.insert({ 2, 4 });
sample.insert({ 3, 8 });
sample.insert({ 4, 10 });
sample.insert({ 3, 4 });
sample.insert({ 5, 4 });
sample.insert({ 6, 4 });
cout << " multimap 元素为:\n";
for (auto& x : sample)
cout << x.first << " : " << x.second << endl;
// 按位置删除元素
sample.erase(sample.begin());
// 按位置删除后的输出
cout << " 删除位置元素后的 multimap 元素:\n";
for (auto& x : sample)
cout << x.first << " : " << x.second << endl;
// 按元素删除
sample.erase(3);
// 按元素删除后的输出
cout << " 按元素名称删除后的 multimap 元素:\n";
for (auto& x : sample)
cout << x.first << " : " << x.second << endl;
// 按范围删除
sample.erase(sample.find(5), sample.end());
// 按范围删除后的输出
cout << " 删除范围的 multimap 元素为:\n";
for (auto& x : sample)
cout << x.first << " : " << x.second << endl;
return 0;
}
multimap 元素为:
6 : 4
2 : 4
1 : 2
3 : 4
3 : 8
4 : 10
5 : 4
删除位置元素后的 multimap 元素:
2 : 4
1 : 2
3 : 4
3 : 8
4 : 10
5 : 4
按元素名称删除后的 multimap 元素:
2 : 4
1 : 2
4 : 10
删除范围的 multimap 元素为:
2 : 4
1 : 2
4 : 10