map::erase
Remove um elemento ou um intervalo de elementos em um mapa das posições especificadas ou remover os elementos que correspondem a uma chave especificada.
iterator erase(
const_iterator Where
);
iterator erase(
const_iterator First,
const_iterator Last
);
size_type erase(
const key_type& Key
);
Parâmetros
Where
Posição do elemento a ser removido.First
Posição do primeiro elemento a ser removido.Last
Posicione apenas além de elemento o último a ser removido.Key
O valor de chave de elementos a serem removidos.
Valor de retorno
Para as primeiras duas funções de membro, um iterador bidirecional que designa o primeiro elemento que permanece além de todos os elementos removidos, ou um elemento que é a extremidade do mapa se tal elemento existe.
Para a terceira função de membro, retorna o número de elementos que foram removidos do mapa.
Exemplo
// 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);
}
Saída
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
Requisitos
mapa <deCabeçalho: >
Namespace: std