| [section:set_union set_union] |
| |
| [heading Prototype] |
| |
| `` |
| template< |
| class SinglePassRange1, |
| class SinglePassRange2, |
| class OutputIterator |
| > |
| OutputIterator set_union(const SinglePassRange1& rng1, |
| const SinglePassRange2& rng2, |
| OutputIterator out); |
| |
| template< |
| class SinglePassRange1, |
| class SinglePassRange2, |
| class OutputIterator, |
| class BinaryPredicate |
| > |
| OutputIterator set_union(const SinglePassRange1& rng1, |
| const SinglePassRange2& rng2, |
| OutputIterator out, |
| BinaryPredicate pred); |
| `` |
| |
| [heading Description] |
| |
| `set_union` constructs a sorted range that is the union 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. |
| |
| [heading Definition] |
| |
| Defined in the header file `boost/range/algorithm/set_algorithm.hpp` |
| |
| [heading 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. |
| |
| [heading 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`. |
| |
| [heading Complexity] |
| |
| Linear. `O(N)`, where `N` is `distance(rng1) + distance(rng2)`. |
| |
| [endsect] |
| |
| |