# std::list<T,Allocator>::remove, remove_if

From cppreference.com
< cpp‎ | container‎ | list

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

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.

### 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 (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

### Example

Run this code

    #include <list>
    #include <iostream>

    int main()
    {
        std::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';
    }

Output:

    2 3 10 -1

### See also

remove remove_if | removes elements satisfying specific criteria (function template)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/container/list/remove&oldid=50538"