C++ STL中的 multimap::erase()

C++ STL中的 multimap::erase()

multimap::erase() 是C++ STL中的内置函数,用于从容器中删除元素。它可以用于删除指定位置的键、元素或给定范围内的元素。
1. 删除键的语法:

multimap_name.erase(key)

参数: 函数接受一个必需参数key,指定要在multimap容器中删除的键。

返回值: 函数不返回任何值。它会删除所有指定键的元素。

// C++ program to illustrate
// multimap::erase(key)
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
  
    // 初始化容器
    multimap<int, int> mp;
  
    // 随机插入元素
    mp.insert({ 2, 30 });
    mp.insert({ 1, 40 });
    mp.insert({ 3, 60 });
    mp.insert({ 2, 20 });
    mp.insert({ 5, 50 });
  
    // 打印元素
    cout << "使用erase()前的multimap:\n";
    cout << "键\t元素\n";
    for (auto itr = mp.begin(); itr != mp.end(); ++itr) {
        cout << itr->first
             << '\t' << itr->second << '\n';
    }
  
    // 使用给定键删除元素的函数
    mp.erase(1);
    mp.erase(2);
  
    // 打印元素
    cout << "\n使用erase()后的multimap:\n";
    cout << "键\t元素\n";
    for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) {
        cout << itr->first
             << '\t' << itr->second << '\n';
    }
    return 0;
}  

输出:

使用erase()前的multimap:
键    元素
1    40
2    30
2    20
3    60
5    50

使用erase()后的multimap:
键    元素
5    50
3    60
  1. 删除位置的语法:
multimap_name.erase(iterator position)

参数: 函数接受一个必需参数position,指定要删除元素的位置的迭代器引用。

返回值: 函数不返回任何值。

下面的程序说明了以上语法:

// C++ program to illustrate
// multimap::erase(position)
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
  
    // 初始化容器
    multimap<int, int> mp;
    // 随机插入元素
    mp.insert({ 2, 30 });
    mp.insert({ 1, 40 });
    mp.insert({ 3, 60 });
    mp.insert({ 2, 20 });
    mp.insert({ 5, 50 });
  
    // 打印元素
    cout << "使用erase()前的multimap:\n";
    cout << "键\t元素\n";
    for (auto itr = mp.begin(); itr != mp.end(); ++itr) {
        cout << itr->first
             << '\t' << itr->second << '\n';
    }
  
    // 使用给定位置删除元素的函数
    auto it = mp.find(2);
    mp.erase(it);
  
    auto it1 = mp.find(5);
    mp.erase(it1);
  
    // 打印元素
    cout << "\n使用erase()后的multimap:\n";
    cout << "键\t元素\n";
    for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) {
        cout << itr->first
             << '\t' << itr->second << '\n';
    }
    return 0;
}  

输出:

使用erase()前的multimap:
键    元素
1    40
2    30
2    20
3    60
5    50

使用erase()后的multimap:
键    元素
3    60
2    20
1    40
  1. **

清除指定范围的语法:

multimap_name.erase(iterator position1, iterator position2)

参数:

* position1-指向要删除元素的迭代器的参考值
* position2 – 指向要删除元素上限的迭代器的参考值

返回值:

该函数不返回任何内容。它删除指定迭代器范围内的所有元素。

下面的程序说明了上述语法:

//C ++程序演示
//multimap :: erase()
#include<bits / stdc ++.h>
using namespacestd;

int main()
{

    //初始化容器
    multimap<int,int> mp;
    //随机顺序插入元素
    mp.insert({2,30});
    mp.insert({1,40});
    mp.insert({3,60});
    mp.insert({2,20});
    mp.insert({5,50});

    //打印元素
    cout <<“使用erase()之前的多重映射为:\ n”;
    cout <<“KEY \ tELEMENT \ n”;
    for(auto itr = mp.begin(); itr!= mp.end(); ++itr){
        cout << itr->first
             <<'\ t'<second<< '\ n';
    }

    //用于在给定范围内擦除的函数
    // find()返回元素所在的迭代器的引用
    auto it1 = mp.find(2);
    auto it2 = mp.find(5);
    mp.erase(it1,it2);

    //打印元素
    cout <<“应用erase()后的多重映射为:\ n”;
    cout <<“KEY \ tELEMENT \ n”;
    for(auto itr = mp.crbegin(); itr!= mp.crend(); ++itr){
        cout << itr->first
             <<'\ t'<second<< '\ n';
    }
     return 0;
}  

输出:

使用erase()之前的多重映射为:
KEY    ELEMENT
1    40
2    30
2    20
3    60
5    50

应用erase()后的多重映射为:
KEY    ELEMENT
5    50
1    40

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程