共用方式為


map::erase

從對應中指定的位置移除項目或一個範圍的元素,或移除符合指定索引鍵的項目。

iterator erase(
   const_iterator Where
);

iterator erase(
   const_iterator First,
   const_iterator Last
);

size_type erase(
   const key_type& Key
);

參數

  • Where
    要移除之項目的位置。

  • First
    第一個要移除之項目的位置。

  • Last
    要移除的最後項目以外的位置。

  • Key
    項目要移除之索引鍵。

傳回值

在前兩個成員函式,雙向 Iterator 保持在被移除的項目以外的第一個項目,如果沒有此類項目存在則為對應結尾的項目。

對於第三個成員函式,傳回從對應中移除的項目數。

範例

// map_erase.cpp
// compile with: /EHsc
#include <map>
#include <string>
#include <iostream>
#include <iterator> // next() and prev() helper functions
#include <utility>  // make_pair()

using namespace std;

using mymap = map<int, string>;

void printmap(const mymap& m) {
    for (const auto& elem : m) {
        cout << " [" << elem.first << ", " << elem.second << "]";
    }
    cout << endl << "size() == " << m.size() << endl << endl;
}

int main()
{
    mymap m1;

    // Fill in some data to test with, one at a time
    m1.insert(make_pair(1, "A"));
    m1.insert(make_pair(2, "B"));
    m1.insert(make_pair(3, "C"));
    m1.insert(make_pair(4, "D"));
    m1.insert(make_pair(5, "E"));

    cout << "Starting data of map m1 is:" << endl;
    printmap(m1);
    // The 1st member function removes an element at a given position
    m1.erase(next(m1.begin()));
    cout << "After the 2nd element is deleted, the map m1 is:" << endl;
    printmap(m1);

    // Fill in some data to test with, one at a time, using an intializer list
    mymap m2
    {
        { 10, "Bob" },
        { 11, "Rob" },
        { 12, "Robert" },
        { 13, "Bert" },
        { 14, "Bobby" }
    };

    cout << "Starting data of map m2 is:" << endl;
    printmap(m2);
    // The 2nd member function removes elements
    // in the range [First, Last)
    m2.erase(next(m2.begin()), prev(m2.end()));
    cout << "After the middle elements are deleted, the map m2 is:" << endl;
    printmap(m2);

    mymap m3;

    // Fill in some data to test with, one at a time, using emplace
    m3.emplace(1, "red");
    m3.emplace(2, "yellow");
    m3.emplace(3, "blue");
    m3.emplace(4, "green");
    m3.emplace(5, "orange");
    m3.emplace(6, "purple");
    m3.emplace(7, "pink");

    cout << "Starting data of map m3 is:" << endl;
    printmap(m3);
    // The 3rd member function removes elements with a given Key
    mymap::size_type count = m3.erase(2);
    // The 3rd member function also returns the number of elements removed
    cout << "The number of elements removed from m3 is: " << count << "." << endl;
    cout << "After the element with a key of 2 is deleted, the map m3 is:" << endl;
    printmap(m3);
}

Output

Starting data of map m1 is:
 [1, A] [2, B] [3, C] [4, D] [5, E]
size() == 5

After the 2nd element is deleted, the map m1 is:
 [1, A] [3, C] [4, D] [5, E]
size() == 4

Starting data of map m2 is:
 [10, Bob] [11, Rob] [12, Robert] [13, Bert] [14, Bobby]
size() == 5

After the middle elements are deleted, the map m2 is:
 [10, Bob] [14, Bobby]
size() == 2

Starting data of map m3 is:
 [1, red] [2, yellow] [3, blue] [4, green] [5, orange] [6, purple] [7, pink]
size() == 7

The number of elements removed from m3 is: 1.
After the element with a key of 2 is deleted, the map m3 is:
 [1, red] [3, blue] [4, green] [5, orange] [6, purple] [7, pink]
size() == 6

需求

標頭:<map>

命名空間: std

請參閱

參考

<map>

map 類別

map::clear

map::max_size、map::clear、map::erase 和 map::size

標準樣板程式庫