unordered_multiset erase()函数在C++ STL中的使用
在C++ STL中,std::unordered_multiset
是一个哈希表,用于存储元素的集合,它的特点是元素无序,可以包含重复的元素。在使用std::unordered_multiset
时,我们可能会用到其erase()
函数,对集合中的元素进行删除操作。本文将介绍erase()
函数在C++ STL中的使用。
erase()函数的基本语法
erase()
函数有多种不同的语法,下面是其中的两种常见语法:
“` C++
// 删除键为key的元素
size_type erase(const key_type& key);
// 删除所有键为key的元素
size_type erase(const key_type& key);
其中,`key_type`为存储在集合中的元素的类型,`size_type`为返回值类型,表示删除的元素数量。
## erase()函数的返回值
`erase()`函数的返回值为删除的元素数量。如果元素不存在,则返回值为0。
## erase()函数的使用示例
下面我们来看一个实际使用`erase()`函数的示例,该示例中我们将创建一个存放字符串的`std::unordered_multiset`,并向其中添加若干个字符串,然后使用`erase()`函数删除其中的某些元素,最后输出修改后的集合。
``` C++
#include <iostream>
#include <unordered_multiset>
#include <string>
using namespace std;
int main() {
// 创建unordered_multiset
unordered_multiset<string> myset;
// 添加元素
myset.insert("hello");
myset.insert("world");
myset.insert("hello");
myset.insert("baby");
// 输出初始集合
cout << "原始集合为:" << endl;
for (const auto& x : myset) {
cout << x << " ";
}
cout << endl;
// 删除元素
size_t count = myset.erase("hello");
// 输出删除后的集合
cout << "删除后的集合为:" << endl;
for (const auto& x : myset) {
cout << x << " ";
}
cout << endl;
// 输出删除元素的数量
cout << "删除了 " << count << " 个元素" << endl;
return 0;
}
</code></pre>
上述示例代码中,我们创建了一个<code>std::unordered_multiset</code>,并向其中添加了四个字符串。然后我们使用<code>erase()</code>函数删除了其中键为"hello"的所有元素,并输出了删除后的集合和删除的元素数量。
<h2>多种语法的使用示例</h2>
下面我们来看一些使用不同语法的<code>erase()</code>函数的示例:
``` C++
#include
#include
#include
using namespace std;
int main() {
// 创建unordered_multiset
unordered_multiset myset;
// 添加元素
myset.insert("hello");
myset.insert("world");
myset.insert("hello");
myset.insert("baby");
// 输出初始集合
cout << "原始集合为:" << endl;
for (const auto& x : myset) {
cout << x << " ";
}
cout << endl;
// 删除单个元素
myset.erase("world");
// 删除所有元素
myset.erase("hello");
// 输出删除后的集合
cout << "删除后的集合为:" << endl;
for (const auto& x : myset) {
cout << x << " ";
}
cout << endl;
return 0;
}
```
上述示例代码中,我们分别使用了erase()
函数的两种不同语法,一种是删除单个元素(键为"world"的元素),一种是删除所有元素(键为"hello"的元素)。我们也输出了删除后的集合以供参考。
结论
erase()
函数是std::unordered_multiset
类中的一个用于删除元素的重要函数。其语法多种多样,可以删除单个元素,也可以删除所有指定键的元素。在使用erase()
函数时需要注意,如果集合中存在多个重复的元素,一次调用erase()
函数只能删除其中一个。如果需要删除所有重复元素,需要使用第二种语法,即循环调用erase()
函数直到返回值为0为止。另外,由于erase()
函数返回值为删除的元素数量,因此可以方便地统计删除的元素数量,以便进一步进行操作。