list::remove() y list::remove_if() en C++ STL

Las listas son contenedores utilizados en C++ para almacenar datos de forma no contigua. Normalmente, las arrays y los vectores son de naturaleza contigua, por lo que las operaciones de inserción y eliminación son más costosas en comparación con la opción de inserción y eliminación en las listas.
 

lista::eliminar()

La función remove() se usa para eliminar todos los valores de la lista que corresponden al valor dado como parámetro a la función
. Sintaxis: 
 

listname.remove(value)
Parameters :
The value of the element to be removed is passed as the parameter.
Result :
Removes all the elements of the container
equal to the value passed as parameter

Ejemplos: 
 

Input  : list list{1, 2, 3, 4, 5};
         list.remove(4);
Output : 1, 2, 3, 5

Input  : list list{1, 2, 2, 2, 5, 6, 7};
         list.remove(2);
Output : 1, 5, 6, 7

Errores y excepciones 
 

  1. Muestra error si el valor pasado no coincide con el tipo de lista.
  2. No muestra ninguna garantía de lanzamiento de excepción si la comparación entre el valor y los elementos de la función de lista no arroja ninguna excepción.

CPP

// CPP program to illustrate
// Implementation of remove() function
#include <iostream>
#include <list>
using namespace std;
 
int main()
{
    list<int> mylist{ 1, 2, 2, 2, 5, 6, 7 };
    mylist.remove(2);
    for (auto it = mylist.begin(); it != mylist.end(); ++it)
        cout << ' ' << *it;
}

Producción: 
 

1 5 6 7

Complejidad del tiempo: lineal O (N)

Complejidad espacial : O(n) donde n es el tamaño de la lista

lista::remove_if()

La función remove_if() se usa para eliminar todos los valores de la lista que se corresponden con el predicado o la condición dada como parámetro de la función. La función itera a través de cada miembro del contenedor de la lista y elimina todos los elementos que devuelven verdadero para el predicado.
Sintaxis: 
 

listname.remove_if(predicate)
Parameters :
The predicate in the form of aa function pointer
or function object is passed as the parameter.
Result :
Removes all the elements of the container
which return true for the predicate.

Ejemplos: 
 

Input  : list list{1, 2, 3, 4, 5};
         list.remove_if(odd);
Output : 2, 4

Input  : list list{1, 2, 2, 2, 5, 6, 7};
         list.remove_if(even);
Output : 1, 5, 7

Errores y excepciones 
 

  1. No muestra ninguna garantía de lanzamiento de excepción si la función de predicado no lanza ninguna excepción.

CPP

// CPP program to illustrate
// Implementation of remove_if() function
#include <iostream>
#include <list>
using namespace std;
 
// Predicate implemented as a function
bool even(const int& value) { return (value % 2) == 0; }
 
// Main function
int main()
{
    list<int> mylist{ 1, 2, 2, 2, 5, 6, 7 };
    mylist.remove_if(even);
    for (auto it = mylist.begin(); it != mylist.end(); ++it)
        cout << ' ' << *it;
}

Producción: 
 

1 5 7

Aplicación: dada una lista de números enteros, elimine todos los números primos de la lista e imprima la lista. 
 

Input  : 2, 4, 6, 7, 9, 11, 13
Output : 4, 6, 9

CPP

// CPP program to illustrate
// Application of remove_if() function
#include <iostream>
#include <list>
using namespace std;
 
// Predicate implemented as a function
bool prime(const int& value)
{
    int i;
    for (i = 2; i < value; i++) {
        if (value % i == 0) {
            return false;
            
        }
    }
    if (value == i) {
        return true;
    }
}
 
// Main function
int main()
{
    list<int> mylist{ 2, 4, 6, 7, 9, 11, 13 };
    mylist.remove_if(prime);
    for (auto it = mylist.begin(); it != mylist.end(); ++it)
        cout << ' ' << *it;
}

Producción: 
 

4 6 9

 Complejidad de tiempo: O(n)

Espacio Auxiliar: O(1) 

Publicación traducida automáticamente

Artículo escrito por AyushSaxena 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 *