Namespaces
Variants

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

From cppreference.net

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

Supprime tous les éléments satisfaisant des critères spécifiques.

1) Supprime tous les éléments qui sont égaux à value (en utilisant operator == ).
2) Supprime tous les éléments pour lesquels le prédicat p renvoie true .

Invalide uniquement les itérateurs et les références vers les éléments supprimés.

Table des matières

Paramètres

value - valeur des éléments à supprimer
p - prédicat unaire qui renvoie ​ true si l'élément doit être supprimé.

L'expression p ( v ) doit être convertible en bool pour chaque argument v de type (éventuellement const) T , indépendamment de la catégorie de valeur , et ne doit pas modifier v . Ainsi, un type de paramètre T & n'est pas autorisé , pas plus que T sauf si pour T un déplacement est équivalent à une copie (depuis C++11) . ​

Exigences de type
-
UnaryPred doit satisfaire aux exigences de Predicate .

Valeur de retour

(aucun)

(jusqu'à C++20)

Le nombre d'éléments supprimés.

(depuis C++20)

Complexité

Étant donné N comme std:: distance ( begin ( ) , end ( ) ) :

1) Exactement N comparaisons en utilisant operator == .
2) Exactement N applications du prédicat p .

Notes

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_list_remove_return_type 201806L (C++20) Modifier le type de retour

Exemple

#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';
}

Sortie :

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

Voir aussi

supprime les éléments satisfaisant des critères spécifiques
(modèle de fonction)