| Home | Libraries | People | FAQ | More

##### includes

###### Prototype

    template<class SinglePassRange1, class SinglePassRange2>
    bool includes(const SinglePassRange1& rng1, const SinglePassRange2& rng2);

    template<
        class SinglePassRange1,
        class SinglePassRange2,
        class BinaryPredicate
        >
    bool includes(const SinglePassRange1& rng1, const SinglePassRange2& rng2,
                  BinaryPredicate pred);

###### Description

`includes` returns `true` if and only if, for every element in `rng2`, an equivalent element is also present in `rng1`. The ordering relationship is determined by using `operator<` in the non-predicate versions, and by evaluating `pred` in the predicate versions.

###### Definition

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

###### Requirements

For the non-predicate versions:

- `SinglePassRange1` is a model of the Single Pass Range Concept.
- `SinglePassRange2` is a model of the Single Pass Range Concept.
- `SinglePassRange1` and `SinglePassRange2` have the same value type.
- `SinglePassRange1`'s value type is a model of the `LessThanComparableConcept`.
- `SinglePassRange2`'s value type is a model of the `LessThanComparableConcept`.
- The ordering of objects of type `SinglePassRange1`'s value type is a strict weak ordering, as defined in the `LessThanComparableConcept` requirements.
- The ordering of objects of type `SinglePassRange2`'s value type is a strict weak ordering, as defined in the `LessThanComparableConcept` requirements.

For the predicate versions:

- `SinglePassRange1` is a model of the Single Pass Range Concept.
- `SinglePassRange2` is a model of the Single Pass Range Concept.
- `SinglePassRange1` and `SinglePassRange2` have the same value type.
- `BinaryPredicate` is a model of the `StrictWeakOrderingConcept`.
- `SinglePassRange1`'s value type is convertible to `BinaryPredicate`'s first argument type.
- `SinglePassRange2`'s value type is convertible to `BinaryPredicate`'s second argument types.

###### Precondition:

For the non-predicate versions:

`rng1` and `rng2` are sorted in ascending order according to `operator<`.

For the predicate versions:

`rng1` and `rng2` are sorted in ascending order according to `pred`.

###### Complexity

Linear. `O(N)`, where `N` is `distance(rng1) + distance(rng2)`.