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
廣告