std::list::remove,remove_if(3)

NAME
std::list::remove,remove_if - std::list::remove,remove_if

Synopsis
   void remove( const T& value ); (until C++20)
   size_type remove( const T& value ); (since C++20)
   template< class UnaryPredicate > (1) (until C++20)
   void remove_if( UnaryPredicate p ); (2)
   template< class UnaryPredicate > (since C++20)
   size_type remove_if( UnaryPredicate p );
   Removes all elements satisfying specific criteria.
   1) Removes all elements that are equal to value.
   2) Removes all elements for which predicate p returns true.

Parameters
   value - value of the elements to remove
           unary predicate which returns true if the element should be removed.
           The expression p(v) must be convertible to bool for every argument v of type
   p - (possibly const) T, regardless of value category, and must not modify v.
           Thus, a parameter type of T&is not allowed
           , nor is T unless for T a move is equivalent to a copy
           (since C++11).

Return value
   (none) (until C++20)
   The number of elements removed. (since C++20)

Complexity
   Linear in the size of the container

Notes
   Feature-test macro: __cpp_lib_list_remove_return_type

Example
// Run this code
 #include <list>
 #include <iostream>
 int main()
 {
     std::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';
 }

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

See also
   remove removes elements satisfying specific criteria
   remove_if (function template)