Scroll to navigation

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.


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 <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)

2022.07.31 http://cppreference.com