English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ Uso e exemplo do map erase()

C++ STL map ( Container )

C ++ map delete()A função é usada para remover um único elemento ou um intervalo de elementos do contêiner map associado a uma chave dada. Portanto, o tamanho será reduzido pelo número de elementos removidos.

Sintaxe

void erase(iterator position);                    	  // De++ 11 Antes
size_type erase(const key_type& k);    		  // De++ 11 Antes
void erase(iterator first, iterator last);  		  // De++ 11 Antes
iterator erase(const_iterator position);		  //De++ 11 Começando
size_type erase(const key_type& k);		  //De++ 11 Começando	
iterator erase(const_iterator first, const_iterator last); //De++ 11 Começando

Parâmetros

Posição:Iterador que aponta para o único elemento a ser removido do map.

k:Remover a chave do elemento do map.

Primeiro:Remover o início do intervalo.

Último:Remover o final do intervalo.

Retorno

Ele retorna um iterador para o próximo elemento removido ou retorna o número de elementos removidos.

Exemplo1

Vamos ver um exemplo simples, removendo elementos através de iteradores.

#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
  map<char, int> mymap;
  map<char, int>::iterator it;
  mymap['a'] =10;
  mymap['b'] =20;
  mymap['c'] =30;
  mymap['d'] =40;
  
  cout << "Antes de excluir elementos: \n";
   for (it = mymap.begin(); it != mymap.end(); ++it)
  std::cout << it->first << " => " << it->second << '\n';
  it = mymap.find('b');
  mymap.erase(it);                // exclusão por iterador
  cout << "\nDepois de excluir elementos: \n";
  for (it = mymap.begin(); it != mymap.end(); ++it)
    std::cout << it->first << " => " << it->second << '\n';
  return 0;
}

Saída:

Antes de excluir elementos: 
a => 10
b => 20
c => 30
d => 40
Depois de excluir elementos: 
a => 10
c => 30
d => 40

No exemplo acima, o elemento foi excluído pelo iterador.

Exemplo2

Vamos ver um exemplo simples, excluindo elementos do map com uma chave dada.

#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
  map<char, int> mymap;
  map<char, int>::iterator it;
  mymap['a'] =10;
  mymap['b'] =20;
  mymap['c'] =30;
  mymap['d'] =40;
  
  cout << "Antes de excluir elementos: \n";
   for (it = mymap.begin(); it != mymap.end(); ++it)
    std::cout << it->first << " => " << it->second << '\n';
 mymap.erase('c');               // exclusão por chave
  cout << "\nDepois de excluir elementos: \n";
  for (it = mymap.begin(); it != mymap.end(); ++it)
    std::cout << it->first << " => " << it->second << '\n';
  return 0;
}

Saída:

Antes de excluir elementos: 
a => 10
b => 20
c => 30
d => 40
Depois de excluir elementos: 
a => 10
b => 20
d => 40

No exemplo acima, foi usado a função delete(key) com a chave 'c' e seu valor mapeado.

Exemplo3

Vamos ver um exemplo simples, excluindo elementos dentro de um determinado intervalo.

#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
  map<char, int> mymap;
  map<char, int>::iterator it;
  mymap['a'] =10;
  mymap['b'] =20;
  mymap['c'] =30;
  mymap['d'] =40;
  
  cout << "Antes de excluir elementos: \n";
   cout << "Tamanho: " << mymap.size() << '\n';
   for (it = mymap.begin(); it != mymap.end(); ++it)
   cout << it->first << " => " << it->second << '\n';
   mymap.erase(mymap.begin(), mymap.end());   // exclusão por intervalo
  cout << "\nDepois de excluir elementos: \n";
  cout << "Tamanho: " << mymap.size();
  for (it = mymap.begin(); it != mymap.end(); ++it)
  cout << it->first << " => " << it->second << '\n';
  return 0;
}

Saída:

Antes de excluir elementos: 
Tamanho é: 4
a => 10
b => 20
c => 30
d => 40
Depois de excluir elementos: 
Tamanho é: 0

No exemplo acima, foi usado a função delete(first, last) para excluir elementos dentro de um determinado intervalo (ou seja, do início ao fim).

Exemplo4

Vamos ver um exemplo simples, removendo todos os números ímpares de um map.

#include <map>
#include <iostream>
using namespace std;
int main()
{
    map<int, string> m = {{1, "um"}, 
                       {2, "dois"}, 
                       {3, "três"},
                       {4, "quatro"}, 
                       {5, "cinco"}, 
                       {6, "seis", };
                       
    // Remova todos os números ímpares do m
    cout << "Os elementos após a remoção dos números ímpares são:\n	";
    for(auto it = m.begin(); it != m.end(); )
        if(it->first % 2 == 1)
            it = m.erase(it);
        else
            ++it;
    for(auto& p : m)
        cout << p.second << ", ";
}

Saída:

Os elementos após a remoção dos números ímpares são:
dois, quatro, seis,

Em todos os exemplos acima, todos os números ímpares foram removidos e os números pares são exibidos.

C++ STL map ( Container )