Skip to main content

std::forward_list remove() method

// (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 );

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
  • p - 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 (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.

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.

std::forward_list remove() method

// (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 );

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
  • p - 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 (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.

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.