table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::forward_list::remove,remove_if(3) | C++ Standard Libary | std::forward_list::remove,remove_if(3) | 
NAME¶
std::forward_list::remove,remove_if - std::forward_list::remove,remove_if
Synopsis¶
 void remove( const T& value ); (since C++11)
  
   (until C++20)
  
   size_type remove( const T& value ); (since C++20)
  
   template< class UnaryPredicate > (1) (since C++11)
  
   void remove_if( UnaryPredicate p ); (2) (until C++20)
  
   template< class UnaryPredicate > (since C++20)
  
   size_type remove_if( UnaryPredicate p );
  
   Removes all elements satisfying specific criteria. Invalidates only the
    iterators
  
   and references to the removed elements.
  
   1) Removes all elements that are equal to value (using operator==).
  
   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).
Type requirements¶
 -
  
   UnaryPredicate must meet the requirements of Predicate.
Return value¶
 (none) (until C++20)
  
   The number of elements removed. (since C++20)
Complexity¶
Given \(\scriptsize N\)N as std::distance(begin(), end()):
  
   1) Exactly \(\scriptsize N\)N comparisons using operator==.
  
   2) Exactly \(\scriptsize N\)N applications of the predicate p.
Notes¶
 Feature-test macro Value Std Feature
  
   __cpp_lib_list_remove_return_type 201806L (C++20) Change the return type
Example¶
// Run this code
  
   #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';
  
   }
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)
| 2024.06.10 | http://cppreference.com |