std::forward_list remove() method
- since C++20
- since C++11
// (1) Non const version only
size_type remove( const T& value );
// (2) Non const version only
template< class UnaryPredicate >
size_type remove_if( UnaryPredicate p );
// (1) Non const version only
void remove( const T& value );
// (2) Non const version only
template< class UnaryPredicate >
void 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
returnstrue
.
Parameters
value
- value of the elements to removep
- unary predicate which returnstrue
if the element should be removed. The expressionp(v)
must be convertible tobool
for every argumentv
of type (possiblyconst
)T
, regardless of value category, and must not modifyv
. Thus, a parameter type ofT&
is not allowed, nor isT
unless forT
a move is equivalent to a copy.
Return value
The number of elements removed. (since C++20)(none) (until C++20)
Complexity
Linear in the size of the container - O(size()).
Exceptions
(none)
Notes
Feature testing macro: __cpp_lib_generic_associative_lookup
.
Example
Main.cpp
#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
This article originates from this CppReference page. It was likely altered for improvements or editors' preference. Click "Edit this page" to see all changes made to this document.
Hover to see the original license.
Hover to see the original license.