unordered_multiset erase()函数在C++ STL中的使用

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()函数返回值为删除的元素数量,因此可以方便地统计删除的元素数量,以便进一步进行操作。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 教程