Collaboration diagram for Merges:
Merges  
(void)  + inPlaceMergeFrom:middle:to: 
Merge two consecutive ranges.  
(void)  + inPlaceMergeFrom:middle:to:predicate: 
Merge two consecutive ranges.  
(OLForwardIterator *)  + mergeFrom:to:andFrom:andTo:destination: 
Merge two sorted ranges.  
(OLForwardIterator *)  + mergeFrom:to:andFrom:andTo:destination:predicate: 
Merge two sorted ranges. 
Merging is the process of combining two sorted ranges into one sorted range. All merge algorithms provide stable merges, meaning that equivilent elements in the input ranges remain in the same relative order after the merge is done.
+ (void) inPlaceMergeFrom:  (OLBidirectionalIterator *)  first  
middle:  (OLBidirectionalIterator *)  middle  
to:  (OLBidirectionalIterator *)  last  
Merge two consecutive ranges.
This message simply sends the message inPlaceMergeFrom:middle:to:predicate: using OLLess as the predicate.
[first, middle)
and [middle, last)
must be sorted in the order defined by OLLess.first  the first position in the first range  
middle  one position beyond the last in the first range and the first position in the second range  
last  one position beyond the last in the second range 
+ (void) inPlaceMergeFrom:  (OLBidirectionalIterator *)  first  
middle:  (OLBidirectionalIterator *)  middle  
to:  (OLBidirectionalIterator *)  last  
predicate:  (id< OLBoolBinaryFunction >)  pred  
Merge two consecutive ranges.
The sorted range [first, middle)
is merged with the sorted range [middle, last)
to create a single sorted range [first, last)
. The merge is a stable merge, meaning that the equivilent elements in each of the two ranges remain in the same relative order after the merge is done.
[first, middle)
and [middle, last)
must be sorted in the order defined by the predicate pred.first  the first position in the first range  
middle  one position beyond the last in the first range and the first position in the second range  
last  one position beyond the last in the second range  
pred  the predicate that indicates the sorting order 
+ (OLForwardIterator*) mergeFrom:  (OLForwardIterator *)  first1  
to:  (OLForwardIterator *)  last1  
andFrom:  (OLForwardIterator *)  first2  
andTo:  (OLForwardIterator *)  last2  
destination:  (OLForwardIterator *)  dest  
Merge two sorted ranges.
This message simply sends the message mergeFrom:to:andFrom:andTo:destination:predicate: using OLLess as the predicate.
[first1, last1)
and [first2, last2)
must be sorted in the order defined by OLLess.first1  the first position in the first range  
last1  one position beyond the last in the first range  
first2  the first position in the second range  
last2  one position beyond the last in the second range  
dest  the first element in the range to which to copy the merged elements 
+ (OLForwardIterator*) mergeFrom:  (OLForwardIterator *)  first1  
to:  (OLForwardIterator *)  last1  
andFrom:  (OLForwardIterator *)  first2  
andTo:  (OLForwardIterator *)  last2  
destination:  (OLForwardIterator *)  dest  
predicate:  (id< OLBoolBinaryFunction >)  pred  
Merge two sorted ranges.
The sorted range [first1, last1)
is merged with the sorted range [first2, last2)
and copied to the location indicated by dest. The resulting range starting at dest will be sorted using the order defined by pred. An iterator pointing to one position beyond the last element in the destination range is returned. The merge is stable, meaning that equivilent elements in the each of the two ranges remain in the same relative order after the merge is done.
[first1, last1)
and [first2, last2)
must be sorted in the order defined by pred.first1  the first position in the first range  
last1  one position beyond the last in the first range  
first2  the first position in the second range  
last2  one position beyond the last in the second range  
dest  the first element in the range to which to copy the merged elements  
pred  the predicate that indicates the sorting order 
