| Home | Libraries | People | FAQ | More

##### remove_if

###### Prototype

    template<
        class ForwardRange,
        class UnaryPredicate
        >
    typename range_iterator<ForwardRange>::type
    remove(ForwardRange& rng, UnaryPredicate pred);

    template<
        class ForwardRange,
        class UnaryPredicate
        >
    typename range_iterator<const ForwardRange>::type
    remove(const ForwardRange& rng, UnaryPredicate pred);

    template<
        range_return_value re,
        class ForwardRange,
        class UnaryPredicate
        >
    typename range_return<ForwardRange,re>::type
    remove(ForwardRange& rng, UnaryPredicate pred);

    template<
        range_return_value re,
        class ForwardRange,
        class UnaryPredicate
        >
    typename range_return<const ForwardRange,re>::type
    remove(const ForwardRange& rng, UnaryPredicate pred);

###### Description

`remove_if` removes from `rng` all of the elements `x` for which `pred(x)` is `true`. The versions of `remove_if` that return an iterator, return an iterator `new_last` such that the range `[begin(rng), new_last)` contains no elements where `pred(x)` is `true`. The iterators in the range `[new_last, end(rng))` are dereferenceable, but the elements are unspecified.

###### Definition

Defined in the header file `boost/range/algorithm/remove_if.hpp`

###### Requirements

- `ForwardRange` is a model of the Forward Range Concept.
- `ForwardRange` is mutable.
- `UnaryPredicate` is a model of the `PredicateConcept`.
- `ForwardRange`'s value type is convertible to `UnaryPredicate`'s argument type.

###### Complexity

Linear. `remove_if` performs exactly `distance(rng)` applications of `pred`.