| Home | Libraries | People | FAQ | More

##### remove

###### Prototype

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

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

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

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

###### Description

`remove` removes from `rng` all of the elements `x` for which `x == val` is `true`. The versions of `remove` that return an iterator, return an iterator `new_last` such that the range `[begin(rng), new_last)` contains no elements equal to `val`. The `range_return` versions of `remove` defines `found` as the new last element. 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.hpp`

###### Requirements

- `ForwardRange` is a model of the Forward Range Concept.
- `ForwardRange` is mutable.
- `Value` is a model of the `EqualityComparableConcept`.
- Objects of type `Value` can be compared for equality with objects of `ForwardRange`'s value type.

###### Complexity

Linear. `remove` performs exactly `distance(rng)` comparisons for equality.