Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

set_intersection
PrevUpHomeNext
Prototype

template<
    class SinglePassRange1,
    class SinglePassRange2,
    class OutputIterator
    >
OutputIterator set_intersection(const SinglePassRange1& rng1,
                                const SinglePassRange2& rng2,
                                OutputIterator          out);

template<
    class SinglePassRange1,
    class SinglePassRange2,
    class OutputIterator,
    class BinaryPredicate
    >
OutputIterator set_intersection(const SinglePassRange1& rng1,
                                const SinglePassRange2& rng2,
                                OutputIterator          out,
                                BinaryPredicate         pred);

Description

set_intersection constructs a sorted range that is the intersection of the sorted ranges rng1 and rng2. The return value is the end of the output range.

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.
  • OutputIterator is a model of the OutputIteratorConcept.
  • 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.
  • OutputIterator is a model of the OutputIteratorConcept.
  • 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).


PrevUpHomeNext