C++ multimap::erase() 函数



C++ 的 std::multimap::erase() 函数用于从容器中删除元素。此函数有 3 个主要重载版本:一个通过键删除元素,另一个通过迭代器删除,第三个通过迭代器范围删除(您可以在下面找到所有变体的语法)。

当与键一起使用时,将删除具有该键的所有元素。使用迭代器时,将删除它指向的元素,并且迭代器变得无效。对于一个范围,将删除指定范围内的所有元素。

语法

以下是 std::multimap::erase() 函数的语法。

iterator  erase (const_iterator position);
or
size_type erase (const key_type& k);
or
iterator  erase (const_iterator first, const_iterator last);

参数

  • position − 指示指向要删除的单个元素的迭代器。
  • k − 指示要从 multimap 中删除的键。
  • first, last − 指示指定 multimap 中范围的迭代器。

返回值

对于基于键的版本,此函数返回删除的元素数量。

示例

让我们看下面的例子,我们将通过键删除元素。

#include <iostream>
#include <map>
int main()
{
    std::multimap<int, std::string> a = {
        {1, "AB"},
        {1, "BC"},
        {2, "CD"},
        {3, "DE"}
    };
    a.erase(1);
    for (const auto& pair : a) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }
    return 0;
}

输出

以上代码的输出如下:

2: CD
3: DE

示例

考虑下面的例子,我们将通过迭代器删除元素。

#include <iostream>
#include <map>
int main()
{
    std::multimap<int, std::string> a = {
        {1, "A"},
        {2, "B"},
        {3, "C"}
    };
    auto x = a.begin();
    a.erase(x);
    for (const auto& pair : a) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }
    return 0;
}

输出

以下是以上代码的输出:

2: B
3: C

示例

在下面的例子中,我们将使用迭代器范围删除元素。

#include <iostream>
#include <map>
int main()
{
    std::multimap<int, std::string> a = {
        {1, "Hi"},
        {2, "Hello"},
        {3, "Namaste"},
        {3, "Vanakam"}
    };
    auto x = a.begin();
    auto y = std::next(x, 2);
    a.erase(x, y);
    for (const auto& pair : a) {
        std::cout << pair.first << ": " << pair.second << std::endl;
    }
    return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

3: Namaste
3: Vanakam
multimap.htm
广告