std::forward_list<T,Allocator>::remove,remove_if (3) - Linux Manuals

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


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


void remove( const T& value ); (since C++11)
                                          (until C++20)
size_type remove( const T& value ); (since C++20)
template< class UnaryPredicate > (since C++11)
void remove_if( UnaryPredicate p ); (until C++20)
template< class UnaryPredicate > (since C++20)
size_type remove_if( UnaryPredicate p );

Removes all elements satisfying specific criteria. The first version removes all elements that are equal to value, the second version removes all elements for which predicate p returns true.


value - value of the elements to remove
        unary predicate which returns true if the element should be removed.
p - The expression p(v) must be convertible to bool for every argument v of type (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)


Linear in the size of the container


// Run this code

  #include <forward_list>
  #include <iostream>

  int main()
      std::forward_list<int> l = { 1,100,2,3,10,1,11,-1,12 };

      l.remove(1); // remove both elements equal to 1
      l.remove_if([](int n){ return n > 10; }); // remove all elements greater than 10

      for (int n : l) {
          std::cout << n << ' ';
      std::cout << '\n';


  2 3 10 -1

See also

          removes elements satisfying specific criteria
remove (function template)