Eliminar elementos en la lista STL de C++

¿Cómo insertar elementos en la lista STL de C++?

Este artículo cubre los aspectos de eliminación en la lista STL.

  1. Usando list::erase() : El propósito de esta función es eliminar los elementos de la lista. Los elementos contiguos únicos o múltiples en el rango se pueden eliminar usando esta función. Esta función toma 2 argumentos, iterador inicial y iterador final.
    Complejidad temporal: O(n) donde (n es el tamaño de la lista).

    // C++ code to demonstrate the working of erase()
      
    #include<iostream>
    #include<list> // for list operations
    using namespace std;
      
    int main()
    {
        // initializing list of integers
        list<int> list1={10,15,20,25,30,35};
          
        // declaring list iterators
        list<int>::iterator it = list1.begin();
        list<int>::iterator it1 = list1.begin();
          
        // incrementing the positions of iterators
        advance(it,2);
        advance(it1,5);
          
        // printing original list
        cout << "The original list is : ";
        for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
           cout << *i << " ";
           
        cout << endl;
          
        // using erase() to erase single element
        // erases 20
        list1.erase(it);
          
        // list after deletion 1 element
        cout << "The list after deleting 1 element using erase() : ";
        for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
           cout << *i << " ";
           
        cout << endl;
          
        it = list1.begin();
          
        // incrementing the positions of iterators
        advance(it,2);
          
        // using erase() to erase multiple elements
        // erases 25,30
        list1.erase(it,it1);
          
        // list after deletion of multiple elements
        cout << "The list after deleting multiple elements using erase() : ";
        for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
           cout << *i << " ";
           
        cout << endl;
      
          
    }

    Producción:

    The original list is : 10 15 20 25 30 35 
    The list after deleting 1 element using erase() : 10 15 25 30 35 
    The list after deleting multiple elements using erase() : 10 15 35 
    
  2. Usando list::pop_front() y list::pop_back() :
    • pop_back() : esta función elimina el último elemento de la lista. Esto reduce el tamaño de la lista en 1.
      Complejidad de tiempo: O(1)
    • pop_front() : esta función elimina el primer elemento de la lista y cambia los elementos posteriores. Esto reduce el tamaño de la lista en 1.
      Complejidad de tiempo: O(1)

    // C++ code to demonstrate the working of pop_front()
    // and pop_back()
      
    #include<iostream>
    #include<list> // for list operations
    using namespace std;
      
    int main()
    {
        // initializing list of integers
        list<int> list1={10,15,20,25,30,35};
          
        // printing original list
        cout << "The original list is : ";
        for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
           cout << *i << " ";
           
        cout << endl;
          
        // using pop_front() to erase first element of list
        // pops 10
        list1.pop_front();
          
        // list after deleting first element
        cout << "The list after deleting first element using pop_front() : ";
        for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
           cout << *i << " ";
           
        cout << endl;
          
        // using pop_back() to erase last element of list
        // pops 35
        list1.pop_back();
          
        // list after deleting last element
        cout << "The list after deleting last element using pop_back() : ";
        for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
           cout << *i << " ";
           
        cout << endl;
          
    }

    Producción:

    The original list is : 10 15 20 25 30 35 
    The list after deleting first element using pop_front() : 15 20 25 30 35 
    The list after deleting last element using pop_back() : 15 20 25 30 
    
  3. Usando remove() y remove_if() :
    • remove() : esta función elimina todas las ocurrencias del valor pasado en sus argumentos. Es diferente de «clear()» en el hecho de que «clear()» elimina valores por posición, mientras que «eliminar()» elimina el valor pasado. El tamaño de la lista se reduce según el número de ocurrencias eliminadas.
      Complejidad de tiempo : O(n)
    • remove_if() : Esta función elimina las ocurrencias de los valores que devuelven «verdadero» a la función pasada en su argumento.
      Complejidad de tiempo : O(n)

    // C++ code to demonstrate the working of remove()
    // remove_if()
      
    #include<iostream>
    #include<list> // for list operations
    using namespace std;
      
    // function to pass in argument of "remove_if()"
    bool is_div_5(const int& num) { return num%5==0;} 
      
    int main()
    {
        // initializing list of integers
        list<int> list1={10,14,20,22,30,33,22};
          
        // printing original list
        cout << "The original list is : ";
        for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
           cout << *i << " ";
           
        cout << endl;
          
        // using remove() to delete all occurrences of 22
        list1.remove(22);
          
        // list after deleting all 22 occurrences
        cout << "The list after deleting all 22 occurrences : ";
        for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
           cout << *i << " ";
           
        cout << endl;
          
        // using remove_if() to delete multiple of 5 
        list1.remove_if(is_div_5);
          
        // list after deleting all multiples of 5
        cout << "The list after deleting all multiples of 5 : ";
        for (list<int>::iterator i=list1.begin(); i!=list1.end(); i++)
           cout << *i << " ";
           
        cout << endl;
          
    }

    Producción:

    The original list is : 10 14 20 22 30 33 22 
    The list after deleting all 22 occurrences : 10 14 20 30 33 
    The list after deleting all multiples of 5 : 14 33 
    

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 *