C++ STL中unordered_multimap的erase函数
在C++ STL中,unordered_multimap是一个无序多重映射容器,可以存储多个键相同的元素,而且这些元素没有特定的排序规则。erase函数是unordered_multimap的一个成员函数,是用来删除unordered_multimap中指定元素的。
unordered_multimap的erase()函数有以下几种用法:
用法1
unordered_multimap::iterator unordered_multimap::erase(unordered_multimap::iterator position);
该用法会删除指定位置的元素,并返回指向被删除元素之后的位置的迭代器。
例如:
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
unordered_multimap<int, string> umm {{1, "one"}, {2, "two"}, {3, "three"}};
auto it = umm.find(2);
umm.erase(it);
for (auto &x : umm) {
cout << x.first << ": " << x.second << endl;
}
return 0;
}
输出:
1: one
3: three
在这个例子中,我们定义了一个unordered_multimap,然后用find()函数找到了键值为2的元素,再用erase()函数删除,最后打印unordered_multimap的内容。
用法2
unordered_multimap::size_type unordered_multimap::erase(const unordered_multimap::key_type& key);
该用法会删除所有键为key的元素,并返回被删除元素的个数。
例如:
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
unordered_multimap<int, string> umm {{1, "one"}, {2, "two"}, {3, "three"}, {2, "二"}, {3, "三"}};
auto count = umm.erase(2);
cout << "删除了" << count << "个元素" << endl;
for (auto &x : umm) {
cout << x.first << ": " << x.second << endl;
}
return 0;
}
输出:
删除了2个元素
1: one
3: three
3: 三
在这个例子中,我们定义了一个unordered_multimap,然后用erase()函数删除了所有键值为2的元素,最后打印unordered_multimap的内容。
用法3
void unordered_multimap::erase(const unordered_multimap::const_iterator first, const unordered_multimap::const_iterator last);
该用法会删除[first,last)
之间的元素,其中last不包括在内。
例如:
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
unordered_multimap<int, string> umm {{1, "one"}, {2, "two"}, {3, "three"}, {2, "二"}, {3, "三"}};
auto first = umm.find(2);
auto last = umm.find(4);
umm.erase(first, last);
for (auto &x : umm) {
cout << x.first << ": " << x.second << endl;
}
return 0;
}
输出:
1: one
3: three
3: 三
在这个例子中,我们定义了一个unordered_multimap,然后用find()函数找到了键值为2和4的元素,再用erase()函数删除这两个元素之间的元素,最后打印unordered_multimap的内容。
用法4
void unordered_multimap::erase(const unordered_multimap::key_type& key);
该用法会删除所有键为key的元素。
例如:
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
unordered_multimap<int, string> umm {{1, "one"}, {2, "two"}, {3, "three"}, {2, "二"}, {3, "三"}};
umm.erase(2);
for (auto &x : umm) {
cout << x.first << ": " << x.second << endl;
}
return 0;
}
输出:
1: one
3: three
3: 三
在这个例子中,我们定义了一个unordered_multimap,然后用erase()函数删除所有键值为2的元素,最后打印unordered_multimap的内容。
总结一下,unordered_multimap的erase()函数可以用来删除单个元素、指定键值的所有元素、指定范围的多个元素。熟练掌握这些用法,会为我们在unordered_multimap中进行元素操作提供很大的便利。
结论
本文介绍了unordered_multimap的erase()函数的四种用法,分别是删除单个元素、删除指定键值的所有元素、删除指定范围的多个元素和删除所有键为指定值的元素。熟练掌握这些用法,能够帮助程序员更好地在unordered_multimap中进行元素操作。