map::erase
Odebere prvek nebo rozsahu prvků v mapování od zadané pozice nebo odebere prvky, které odpovídají zadaným klíčem.
iterator erase(
const_iterator Where
);
iterator erase(
const_iterator First,
const_iterator Last
);
size_type erase(
const key_type& Key
);
Parametry
Where
Pozice prvku, který má být odebrán.First
Pozice prvního prvku, který má být odebrán.Last
Pozice bezprostředně za posledním prvkem, který má být odebrán.Key
Hodnota klíče prvků, které mají být odebrány.
Vrácená hodnota
Pro první dvě členské funkce obousměrný iterátor, označí první prvek zbývající za všechny prvky odstraněny nebo prvek, který je na konec mapy, pokud neexistuje žádný takový prvek.
Třetí členské funkce vrátí počet prvků, které byly odebrány z mapy.
Příklad
// 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);
}
Výsledek
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
Požadavky
Hlavička: <map>
Obor názvů: std