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

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

unordered_multiset::erase()函数是C++ STL中的一个内置函数,用于删除单个元素或具有确定值的所有元素或某个范围内(从起始位置(包括)到结束位置(不包括)的)元素。执行此操作会减小容器的大小,减去已删除的元素数量。

语法 :

  1. unordered_multiset_name.erase(iterator position)
  2. unordered_multiset_name.erase(iterator start, iterator end)
  3. unordered_multiset_name.erase(key_value)

参数 : 该函数有三个版本。

  1. 第一个版本以迭代器作为参数,删除该位置上存在的元素。
  2. 第二个版本以两个迭代器(如start和end)作为参数,删除范围[start, end)内的所有元素。
  3. 第三个版本以键值作为参数,删除多个集合中的所有具有该值的元素。

返回值 : 如上面语法中所示,函数的第一和第二个版本会返回一个迭代器,其紧随被删除的最后一个元素。第三个版本将返回删除的元素数量。

下面的程序说明了unordered_multiset::erase()函数:

程序1 :

// C++ program to illustrate the
// unordered_multiset::erase() function
  
#include <iostream>
#include <unordered_set>
  
using namespace std;
  
int main()
{
    unordered_multiset<int> samplemultiSet;
  
    // 插入元素
    samplemultiSet.insert(10);
    samplemultiSet.insert(5);
    samplemultiSet.insert(15);
    samplemultiSet.insert(20);
    samplemultiSet.insert(25);
    samplemultiSet.insert(10);
    samplemultiSet.insert(15);
    samplemultiSet.insert(20);
  
    // 按位置删除特定元素
    samplemultiSet.erase(samplemultiSet.begin());
  
    // 删除一系列元素,这里是所有元素
    samplemultiSet.erase(samplemultiSet.begin(), 
                              samplemultiSet.end());
  
    // 删除操作后显示集合
    for (auto it = samplemultiSet.begin(); 
                    it != samplemultiSet.end(); it++) 
    {
        cout << *it << " ";
    }
  
    cout << "\nMultiSet size: " << samplemultiSet.size();
  
    return 0;
}
10 10 15 15 20 20 25 
MultiSet size: 0

程序2 :

// C++ program to illustrate the
// unordered_multiset::erase() function
  
#include <iostream>
#include <unordered_set>
  
using namespace std;
  
int main()
{
    unordered_multiset<int> samplemultiSet;
  
    // 插入元素
    samplemultiSet.insert(10);
    samplemultiSet.insert(5);
    samplemultiSet.insert(15);
    samplemultiSet.insert(20);
    samplemultiSet.insert(25);
    samplemultiSet.insert(10);
    samplemultiSet.insert(15);
    samplemultiSet.insert(20);
  
    // 按值删除所有值为10的元素
    samplemultiSet.erase(10);
  
    // 删除操作后显示集合
    for (auto it = samplemultiSet.begin(); 
                it != samplemultiSet.end(); it++) 
    {
        cout << *it << " ";
    }
  
    return 0;
}
5 15 15 20 20 25

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程