Diferentes formas de eliminar elementos en std::map (erase() y clear())

Este artículo trata sobre la parte de eliminación de Maps.

  1. Usando erase() : erase() se usa para borrar el par en el mapa mencionado en el argumento, ya sea su posición, su valor o un rango de números.
    • erase(key) : Borra el par clave-valor usando la clave mencionada en su argumento. reordena el mapa después de la eliminación. Devuelve el número de entradas eliminadas. Si se eliminan claves que no existen, se devuelve 0.
      Complejidad de tiempo: log(n) (n es el tamaño del mapa)
    • erase(iter) : Borra el par en la posición señalada por el iterador mencionado en su argumento.
      Complejidad de tiempo: log(n) (n es el tamaño del mapa)
    • erase(strt_iter, end_iter) : Borra el rango de pares desde “strt_iter” hasta “end_iter”.
      Complejidad de tiempo: O(k) (k es el tamaño del mapa)

    // C++ code to demonstrate the working of erase()
      
    #include<iostream>
    #include<map> // for map operations
    using namespace std;
      
    int main()
    {
        // declaring map
        // of char and int
        map< char, int > mp;
          
        // declaring iterators
        map<char, int>::iterator it ;
        map<char, int>::iterator it1;
        map<char, int>::iterator it2;
          
        // inserting values 
        mp['a']=5;
        mp['b']=10;
        mp['c']=15;
        mp['d']=20;
        mp['e']=30;
      
        // printing initial map elements
        cout << "The initial map elements are : \n";
          
        for (it1 = mp.begin(); it1!=mp.end(); ++it1)
            cout << it1->first << "->" << it1->second << endl;
          
        it = mp.begin();
          
        cout << endl;
          
        // erasing element using iterator
        // erases 2nd element
        // 'b'
        ++it;
        mp.erase(it);
          
        // printing map elements after deletion
        cout << "The map elements after 1st deletion are : \n";
          
        for (it1 = mp.begin(); it1!=mp.end(); ++it1)
            cout << it1->first << "->" << it1->second << endl;
          
        cout << endl;
          
        // erasing element using value 
        int c = mp.erase('c');
          
        // printing map elements after deletion
        cout << "The map elements after 2nd deletion are : \n";
          
        for (it1 = mp.begin(); it1!=mp.end(); ++it1)
            cout << it1->first << "->" << it1->second << endl;
          
        cout << "The number of elements deleted in 2nd deletion are : ";
        cout << c << endl;
          
        cout << endl;
          
        // erasing element using value 
        // key not present
        int d = mp.erase('w');
          
        // printing map elements after deletion
        cout << "The map elements after 3rd deletion are : \n";
          
        for (it1 = mp.begin(); it1!=mp.end(); ++it1)
            cout << it1->first << "->" << it1->second << endl;
          
        cout << "The number of elements deleted in 3rd deletion are : ";
        cout << d << endl;
          
        cout << endl;
          
          
        ++it;
        ++it;
          
        // erasing element using range iterator
        // deletes "d" and "e" keys
        mp.erase(it, mp.end());
          
        // printing map elements 4th deletion
        cout << "The map elements after 4th deletion are : \n";
      
        for (it1 = mp.begin(); it1!=mp.end(); ++it1)
            cout << it1->first << "->" << it1->second << endl;
          
        cout << endl;
          
    }

    Producción:

    The initial map elements are : 
    a->5
    b->10
    c->15
    d->20
    e->30
    
    The map elements after 1st deletion are : 
    a->5
    c->15
    d->20
    e->30
    
    The map elements after 2nd deletion are : 
    a->5
    d->20
    e->30
    The number of elements deleted in 2nd deletion are : 1
    
    The map elements after 3rd deletion are : 
    a->5
    d->20
    e->30
    The number of elements deleted in 3rd deletion are : 0
    
    The map elements after 4th deletion are : 
    a->5
    
  2. Usando clear() : Esta función borra todos los elementos presentes en el mapa. Después de llamar a esta función, el tamaño del mapa se convierte en 0.

    // C++ code to demonstrate the working of clear()
      
    #include<iostream>
    #include<map> // for map operations
    using namespace std;
      
    int main()
    {
        // declaring map
        // of char and int
        map< char, int > mp;
          
        // declaring iterator
        map<char, int>::iterator it ;
          
        // inserting values 
         mp['a']=5;
         mp['b']=10;
         mp['c']=15;
         mp['d']=20;
         mp['e']=30;
      
        // printing initial map elements
        cout << "The initial map elements are : \n";
        for (it1 = mp.begin(); it1!=mp.end();  ++it1)
        cout << it1->first << "->" << it1->second << endl;
          
        // using clear() to erase all elements in map
        mp.clear();
          
        // printing map elements after deletion
        cout << "The map elements after clearing all elements are : \n";
        for (it1 = mp.begin(); it1!=mp.end();  ++it1)
        cout << it1->first << "->" << it1->second << endl;
          
    }

    Producción:

    The initial map elements are : 
    a->5
    b->10
    c->15
    d->20
    e->30
    The map elements after clearing all elements are : 
    

Este artículo es una contribución de Manjeet Singh . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *