Namespaces
Variants

std::forward_list<T,Allocator>:: remove, remove_if

From cppreference.net

(1)
void remove ( const T & value ) ;
(desde C++11)
(hasta C++20)
size_type remove ( const T & value ) ;
(desde C++20)
(constexpr desde C++26)
(2)
template < class UnaryPred >
void remove_if ( UnaryPred p ) ;
(desde C++11)
(hasta C++20)
template < class UnaryPred >
size_type remove_if ( UnaryPred p ) ;
(desde C++20)
(constexpr desde C++26)

Elimina todos los elementos que cumplen criterios específicos.

1) Elimina todos los elementos que son iguales a value (utilizando operator == ).
2) Elimina todos los elementos para los cuales el predicado p devuelve true .

Invalida únicamente los iteradores y referencias a los elementos eliminados.

Contenidos

Parámetros

value - valor de los elementos a eliminar
p - predicado unario que devuelve ​ true si el elemento debe eliminarse.

La expresión p ( v ) debe ser convertible a bool para cada argumento v de tipo (posiblemente const) T , independientemente de la categoría de valor , y no debe modificar v . Por lo tanto, no se permite un tipo de parámetro T & , ni tampoco T a menos que para T un movimiento sea equivalente a una copia (since C++11) . ​

Requisitos de tipo
-
UnaryPred debe cumplir con los requisitos de Predicate .

Valor de retorno

(ninguno)

(until C++20)

El número de elementos eliminados.

(since C++20)

Complejidad

Dado N como std:: distance ( begin ( ) , end ( ) ) :

1) Exactamente N comparaciones usando operator == .
2) Exactamente N aplicaciones del predicado p .

Notas

Macro de prueba de características Valor Std Característica
__cpp_lib_list_remove_return_type 201806L (C++20) Cambiar el tipo de retorno

Ejemplo

#include <forward_list>
#include <iostream>
int main()
{
    std::forward_list<int> l = {1, 100, 2, 3, 10, 1, 11, -1, 12};
    auto count1 = l.remove(1);
    std::cout << count1 << " elements equal to 1 were removed\n";
    auto count2 = l.remove_if([](int n){ return n > 10; });
    std::cout << count2 << " elements greater than 10 were removed\n";
    std::cout << "Finally, the list contains: ";
    for (int n : l)
        std::cout << n << ' ';
    std::cout << '\n';
}

Salida:

2 elements equal to 1 were removed
3 elements greater than 10 were removed
Finally, the list contains: 2 3 10 -1

Véase también

elimina elementos que cumplen criterios específicos
(function template)