📜  C++ STL-multimap.erase()函数(1)

📅  最后修改于: 2023-12-03 14:39:51.308000             🧑  作者: Mango

C++ STL-multimap.erase()函数

multimap 是 C++ STL 中的一个容器,它是一个关联式容器,可以用于存储键-值对。与 map 不同的是,multimap 中的键可以重复,也就是说,它可以存储多个键相同的值。erase() 函数是 multimap 中的一个成员函数,用于删除 multimap 容器中的元素。

语法

下面是 multimap.erase() 函数的语法:

iterator multimap::erase(iterator position);
size_t multimap::erase(key_type const& k);

参数说明:

  • position :一个迭代器,指向要删除的元素
  • k:要删除的键的值

返回值说明:

erase() 函数返回一个 size_t 类型的值,表示删除元素的个数。

功能

multimap.erase() 函数用于删除 multimap 容器中的元素。可以有两种方式使用该函数:

  1. 删除指定位置的元素:

    multimap<int, string> m;
    m.insert(pair<int, string>(1, "one"));
    m.insert(pair<int, string>(2, "two"));
    m.insert(pair<int, string>(3, "three"));
    auto it = m.find(2); // 找到键为 2 的元素
    m.erase(it); // 删除该元素
    
    // 输出 multimap 中的元素
    for (auto &p: m) {
        cout << p.first << " : " << p.second << endl;
    }
    

    输出结果:

    1 : one
    3 : three
    
  2. 删除指定的键所对应的所有元素:

    multimap<int, string> m;
    m.insert(pair<int, string>(1, "one"));
    m.insert(pair<int, string>(2, "two"));
    m.insert(pair<int, string>(2, "three"));
    m.insert(pair<int, string>(3, "four"));
    m.insert(pair<int, string>(3, "five"));
    m.insert(pair<int, string>(3, "six"));
    auto cnt = m.erase(2); // 删除键为 2 的所有元素
    
    // 输出 multimap 中的元素
    for (auto &p: m) {
        cout << p.first << " : " << p.second << endl;
    }
    
    cout << "Number of elements erased: " << cnt << endl;
    

    输出结果:

    1 : one
    3 : four
    3 : five
    3 : six
    Number of elements erased: 2
    
注意事项
  • 如果要删除的键不存在于 multimap 中,erase() 函数不会产生任何影响,返回值为 0。
  • 如果要删除的键在 multimap 中有多个相同的元素,erase() 函数会将它们全部删除,并返回删除的元素个数。
  • 在第一种用法中,如果要删除的元素不存在于 multimap 中,it 将指向 multimap 的末尾。

以上是 multimap.erase() 函数的介绍。它可以很方便地删除 multimap 中的元素。如果您想了解更多关于 multimap 的内容,可以查看 STL 中其他容器的介绍。