Set operation algorithms
Functions
- template<typename _InputIterator1 , typename _InputIterator2 , typename _Compare > bool includes (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp)
- template<typename _InputIterator1 , typename _InputIterator2 > bool includes (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2)
- template<typename _InputIterator1 , typename _InputIterator2 , typename _OutputIterator , typename _Compare > _OutputIterator set_difference (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp)
- template<typename _InputIterator1 , typename _InputIterator2 , typename _OutputIterator > _OutputIterator set_difference (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result)
- template<typename _InputIterator1 , typename _InputIterator2 , typename _OutputIterator , typename _Compare > _OutputIterator set_intersection (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp)
- template<typename _InputIterator1 , typename _InputIterator2 , typename _OutputIterator > _OutputIterator set_intersection (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result)
- template<typename _InputIterator1 , typename _InputIterator2 , typename _OutputIterator , typename _Compare > _OutputIterator set_symmetric_difference (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp)
- template<typename _InputIterator1 , typename _InputIterator2 , typename _OutputIterator > _OutputIterator set_symmetric_difference (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result)
- template<typename _InputIterator1 , typename _InputIterator2 , typename _OutputIterator , typename _Compare > _OutputIterator set_union (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result, _Compare __comp)
- template<typename _InputIterator1 , typename _InputIterator2 , typename _OutputIterator > _OutputIterator set_union (_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _InputIterator2 __last2, _OutputIterator __result)
Detailed Description
These algorithms are common set operations performed on sequences that are already sorted.
The number of comparisons will be linear.
Function Documentation
bool std::includes |
( |
_InputIterator1 |
__first1, |
|
|
_InputIterator1 |
__last1, |
|
|
_InputIterator2 |
__first2, |
|
|
_InputIterator2 |
__last2, |
|
|
_Compare |
__comp | |
|
) |
| | [inline] |
Determines whether all elements of a sequence exists in a range using comparison.
- Parameters:
-
| first1 | Start of search range. |
| last1 | End of search range. |
| first2 | Start of sequence |
| last2 | End of sequence. |
| comp | Comparison function to use. |
- Returns:
- True if each element in [first2,last2) is contained in order within [first1,last1) according to comp. False otherwise.
This operation expects both [first1,last1) and [first2,last2) to be sorted. Searches for the presence of each element in [first2,last2) within [first1,last1), using comp to decide. The iterators over each range only move forward, so this is a linear algorithm. If an element in [first2,last2) is not found before the search
iterator reaches
last2, false is returned.
Definition at line 4183 of file stl_algo.h.
bool std::includes |
( |
_InputIterator1 |
__first1, |
|
|
_InputIterator1 |
__last1, |
|
|
_InputIterator2 |
__first2, |
|
|
_InputIterator2 |
__last2 | |
|
) |
| | [inline] |
Determines whether all elements of a sequence exists in a range.
- Parameters:
-
| first1 | Start of search range. |
| last1 | End of search range. |
| first2 | Start of sequence |
| last2 | End of sequence. |
- Returns:
- True if each element in [first2,last2) is contained in order within [first1,last1). False otherwise.
This operation expects both [first1,last1) and [first2,last2) to be sorted. Searches for the presence of each element in [first2,last2) within [first1,last1). The iterators over each range only move forward, so this is a linear algorithm. If an element in [first2,last2) is not found before the search
iterator reaches
last2, false is returned.
Definition at line 4136 of file stl_algo.h.
_OutputIterator std::set_difference |
( |
_InputIterator1 |
__first1, |
|
|
_InputIterator1 |
__last1, |
|
|
_InputIterator2 |
__first2, |
|
|
_InputIterator2 |
__last2, |
|
|
_OutputIterator |
__result, |
|
|
_Compare |
__comp | |
|
) |
| | [inline] |
Return the difference of two sorted ranges using comparison functor.
- Parameters:
-
| first1 | Start of first range. |
| last1 | End of first range. |
| first2 | Start of second range. |
| last2 | End of second range. |
| comp | The comparison functor. |
- Returns:
- End of the output range.
This operation iterates over both ranges, copying elements present in the first range but not the second in order to the output range. Iterators increment for each range. When the current element of the first range is
less than the second according to
comp, that element is copied and the
iterator advances. If the current element of the second range is
less, no element is copied and the
iterator advances. If an element is contained in both ranges according to
comp, no elements are copied and both ranges advance. The output range may not overlap either input range.
Definition at line 4518 of file stl_algo.h.
References std::copy().
_OutputIterator std::set_difference |
( |
_InputIterator1 |
__first1, |
|
|
_InputIterator1 |
__last1, |
|
|
_InputIterator2 |
__first2, |
|
|
_InputIterator2 |
__last2, |
|
|
_OutputIterator |
__result | |
|
) |
| | [inline] |
Return the difference of two sorted ranges.
- Parameters:
-
| first1 | Start of first range. |
| last1 | End of first range. |
| first2 | Start of second range. |
| last2 | End of second range. |
- Returns:
- End of the output range.
This operation iterates over both ranges, copying elements present in the first range but not the second in order to the output range. Iterators increment for each range. When the current element of the first range is
less than the second, that element is copied and the
iterator advances. If the current element of the second range is
less, the
iterator advances, but no element is copied. If an element is contained in both ranges, no elements are copied and both ranges advance. The output range may not overlap either input range.
Definition at line 4460 of file stl_algo.h.
References std::copy().
_OutputIterator std::set_intersection |
( |
_InputIterator1 |
__first1, |
|
|
_InputIterator1 |
__last1, |
|
|
_InputIterator2 |
__first2, |
|
|
_InputIterator2 |
__last2, |
|
|
_OutputIterator |
__result, |
|
|
_Compare |
__comp | |
|
) |
| | [inline] |
Return the intersection of two sorted ranges using comparison functor.
- Parameters:
-
| first1 | Start of first range. |
| last1 | End of first range. |
| first2 | Start of second range. |
| last2 | End of second range. |
| comp | The comparison functor. |
- Returns:
- End of the output range.
This operation iterates over both ranges, copying elements present in both ranges in order to the output range. Iterators increment for each range. When the current element of one range is
less than the other according to
comp, that
iterator advances. If an element is contained in both ranges according to
comp, the element from the first range is copied and both ranges advance. The output range may not overlap either input range.
Definition at line 4406 of file stl_algo.h.
_OutputIterator std::set_intersection |
( |
_InputIterator1 |
__first1, |
|
|
_InputIterator1 |
__last1, |
|
|
_InputIterator2 |
__first2, |
|
|
_InputIterator2 |
__last2, |
|
|
_OutputIterator |
__result | |
|
) |
| | [inline] |
Return the intersection of two sorted ranges.
- Parameters:
-
| first1 | Start of first range. |
| last1 | End of first range. |
| first2 | Start of second range. |
| last2 | End of second range. |
- Returns:
- End of the output range.
This operation iterates over both ranges, copying elements present in both ranges in order to the output range. Iterators increment for each range. When the current element of one range is
less than the other, that
iterator advances. If an element is contained in both ranges, the element from the first range is copied and both ranges advance. The output range may not overlap either input range.
Definition at line 4352 of file stl_algo.h.
_OutputIterator std::set_symmetric_difference |
( |
_InputIterator1 |
__first1, |
|
|
_InputIterator1 |
__last1, |
|
|
_InputIterator2 |
__first2, |
|
|
_InputIterator2 |
__last2, |
|
|
_OutputIterator |
__result, |
|
|
_Compare |
__comp | |
|
) |
| | [inline] |
Return the symmetric difference of two sorted ranges using comparison functor.
- Parameters:
-
| first1 | Start of first range. |
| last1 | End of first range. |
| first2 | Start of second range. |
| last2 | End of second range. |
| comp | The comparison functor. |
- Returns:
- End of the output range.
This operation iterates over both ranges, copying elements present in one range but not the other in order to the output range. Iterators increment for each range. When the current element of one range is
less than the other according to
comp, that element is copied and the
iterator advances. If an element is contained in both ranges according to
comp, no elements are copied and both ranges advance. The output range may not overlap either input range.
Definition at line 4633 of file stl_algo.h.
References std::copy().
_OutputIterator std::set_symmetric_difference |
( |
_InputIterator1 |
__first1, |
|
|
_InputIterator1 |
__last1, |
|
|
_InputIterator2 |
__first2, |
|
|
_InputIterator2 |
__last2, |
|
|
_OutputIterator |
__result | |
|
) |
| | [inline] |
Return the symmetric difference of two sorted ranges.
- Parameters:
-
| first1 | Start of first range. |
| last1 | End of first range. |
| first2 | Start of second range. |
| last2 | End of second range. |
- Returns:
- End of the output range.
This operation iterates over both ranges, copying elements present in one range but not the other in order to the output range. Iterators increment for each range. When the current element of one range is
less than the other, that element is copied and the
iterator advances. If an element is contained in both ranges, no elements are copied and both ranges advance. The output range may not overlap either input range.
Definition at line 4572 of file stl_algo.h.
References std::copy().
_OutputIterator std::set_union |
( |
_InputIterator1 |
__first1, |
|
|
_InputIterator1 |
__last1, |
|
|
_InputIterator2 |
__first2, |
|
|
_InputIterator2 |
__last2, |
|
|
_OutputIterator |
__result, |
|
|
_Compare |
__comp | |
|
) |
| | [inline] |
Return the union of two sorted ranges using a comparison functor.
- Parameters:
-
| first1 | Start of first range. |
| last1 | End of first range. |
| first2 | Start of second range. |
| last2 | End of second range. |
| comp | The comparison functor. |
- Returns:
- End of the output range.
This operation iterates over both ranges, copying elements present in each range in order to the output range. Iterators increment for each range. When the current element of one range is
less than the other according to
comp, that element is copied and the
iterator advanced. If an equivalent element according to
comp is contained in both ranges, the element from the first range is copied and both ranges advance. The output range may not overlap either input range.
Definition at line 4291 of file stl_algo.h.
References std::copy().
_OutputIterator std::set_union |
( |
_InputIterator1 |
__first1, |
|
|
_InputIterator1 |
__last1, |
|
|
_InputIterator2 |
__first2, |
|
|
_InputIterator2 |
__last2, |
|
|
_OutputIterator |
__result | |
|
) |
| | [inline] |
Return the union of two sorted ranges.
- Parameters:
-
| first1 | Start of first range. |
| last1 | End of first range. |
| first2 | Start of second range. |
| last2 | End of second range. |
- Returns:
- End of the output range.
This operation iterates over both ranges, copying elements present in each range in order to the output range. Iterators increment for each range. When the current element of one range is
less than the other, that element is copied and the
iterator advanced. If an element is contained in both ranges, the element from the first range is copied and both ranges advance. The output range may not overlap either input range.
Definition at line 4229 of file stl_algo.h.
References std::copy().