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

教程基础C++

Controllo di flusso C++

Funzione C++

Array e stringhe C++

Strutture dati C++

Classi e oggetti C++

Puntatore C++

Ereditarietà C++

Tutorial STL C++

Manuale di riferimento C++

Utilizzo e esempio della funzione erase() di C++ map

map (contenitore) STL C++

C ++ map delete()La funzione viene utilizzata per eliminare un singolo elemento o un intervallo di elementi associati a una chiave data nel contenitore map. Pertanto, la dimensione sarà ridotta tramite il numero di elementi eliminati.

Sintassi

void erase(iterator position);  // Prima del C++ 11
size_type erase(const key_type& k);  // Prima del C++ 11
void erase(iterator first, iterator last);  // Prima del C++ 11
iterator erase(const_iterator position);  // Da C++ 11
size_type erase(const key_type& k);  // Da C++ 11	
iterator erase(const_iterator first, const_iterator last); // Da C++ 11

Parametro

position: Puntatore all'elemento singolo da rimuovere dal map.

k: Per rimuovere la chiave dell'elemento da map.

first: Per cancellare l'inizio dell'intervallo.

last: Per cancellare la fine dell'intervallo.

Valore di ritorno

Restituisce un iteratore che punta al elemento successivo dell'elemento cancellato, o restituisce il numero di elementi cancellati.

Esempio 1

Facciamo un esempio semplice per cancellare un elemento tramite l'iteratore.

#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<<"Prima di eliminare gli elementi: \n";
   for (it=mymap.begin(); it!=mymap.end(); ++it)
  std::cout << it->first << " => " << it->second << '\n';
  it = mymap.find('b');
  mymap.erase(it);  // Eliminazione tramite iteratore
  cout<<"\nDopo aver eliminato gli elementi: \n";
  for (it=mymap.begin(); it!=mymap.end(); ++it)
    std::cout << it->first << " => " << it->second << '\n';
  return 0;
}

Output:

Prima di eliminare gli elementi: 
a => 10
b => 20
c => 30
d => 40
Dopo aver eliminato gli elementi: 
a => 10
c => 30
d => 40

Nell'esempio precedente, l'elemento è stato cancellato dall'iteratore.

Esempio 2

Lasciate che vi mostriamo un esempio semplice, eliminare gli elementi della mappa con una chiave data.

#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<<"Prima di eliminare gli elementi: \n";
   for (it=mymap.begin(); it!=mymap.end(); ++it)
    std::cout << it->first << " => " << it->second << '\n';
 mymap.erase ('c');               // eliminazione per chiave
  cout<<"\nDopo aver eliminato gli elementi: \n";
  for (it=mymap.begin(); it!=mymap.end(); ++it)
    std::cout << it->first << " => " << it->second << '\n';
  return 0;
}

Output:

Prima di eliminare gli elementi: 
a => 10
b => 20
c => 30
d => 40
Dopo aver eliminato gli elementi: 
a => 10
b => 20
d => 40

Nell'esempio sopra, è stato utilizzato la funzione delete(key) utilizzando la chiave 'c' e il valore mappato.

Esempio 3

Lasciate che vi mostriamo un esempio semplice, eliminare gli elementi con un intervallo specificato.

#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<<"Prima di eliminare gli elementi: \n";
   cout<<"Dimensione: "<<mymap.size()<<'\n';
   for (it=mymap.begin(); it!=mymap.end(); ++it)
   cout << it->first << " => " << it->second << '\n';
   mymap.erase ( mymap.begin () ,  mymap.end () );   // eliminazione per intervallo
  cout<<"\nDopo aver eliminato gli elementi: \n";
  cout<<"Dimensione: "<<mymap.size();
  for (it=mymap.begin(); it!=mymap.end(); ++it)
  cout << it->first << " => " << it->second << '\n';
  return 0;
}

Output:

Prima di eliminare gli elementi: 
La dimensione è: 4
a => 10
b => 20
c => 30
d => 40
Dopo aver eliminato gli elementi: 
La dimensione è: 0

Nell'esempio sopra, è stato utilizzato la funzione delete(first, last) per eliminare gli elementi con un intervallo specificato (cioè da inizio a fine).

Esempio 4

Lasciate che vi mostriamo un esempio semplice, eliminare tutti gli numeri dispari da una mappa.

#include <map>
#include <iostream>
using namespace std;
int main()
{
    map<int, string> m = {{1, "one"}, 
                       {2, "two"}, 
                       {3, "three"},
                       {4, "four"}, 
                       {5, "five"}, 
                       {6, "six"}};
                       
    // Rimuovi tutti gli numeri dispari da m
    cout << "Gli elementi dopo la rimozione degli numeri dispari sono:\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 << ", ";
}

Output:

Gli elementi dopo la rimozione degli numeri dispari sono:
due, quattro, sei,

Tutti gli numeri dispari sono stati rimossi e mostrati gli numeri pari.

map (contenitore) STL C++