STL Sample for the merge FunctionLast reviewed: October 9, 1997Article ID: Q157560 |
The information in this article applies to:
SUMMARYThe sample code below illustrates how to use the merge STL function in Visual C++.
MORE INFORMATION
Required Header
<algorithm> Prototype
template<class InputIterator1, class InputIterator2, class OutputIterator> inline OutputIterator merge( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2 OutputIterator result )NOTE: The class/parameter names in the prototype do not match the original version in the header file. They have been modified to improve readability.
DescriptionThe merge algorithm merges two sorted sequences: [first1..last1) and [first2..last2) into a single sorted sequence starting at result. This version assumes that the ranges [first1..last1) and [first2..last2) are sorted using operator<. If both ranges contain equal values, the value from the first range will be stored first. The result of merging overlapping ranges is undefined.
Sample Code
////////////////////////////////////////////////////////////////////// // // Compile options needed: /GX // // merge.cpp : Illustrates how to use the merge // function. // // Functions: // // merge : Merge two sorted sequences // into a single sorted list. // // Written by Kalindi Sanghrajka // of Microsoft Product Support Services, // Software Core Developer Support. // Copyright (c) 1996 Microsoft Corporation. All rights reserved. ////////////////////////////////////////////////////////////////////// // disable warning C4786: symbol greater than 255 character, // okay to ignore#pragma warning(disable: 4786)
#include <iostream> #include <algorithm> #include <vector> #include <list> #include <deque> void main(){ const int MAX_ELEMENTS = 8 ; // Define a template class vector of int typedef vector<int, allocator<int> > IntVector ; //Define an iterator for template class vector of ints typedef IntVector::iterator IntVectorIt ; IntVector NumbersVector(MAX_ELEMENTS) ; IntVectorIt startv, endv, itv ; // Define a template class list of int typedef list<int, allocator<int> > IntList ; //Define an iterator for template class list of ints typedef IntList::iterator IntListIt ; IntList NumbersList ; IntListIt first, last, itl ; // Define a template class deque of int typedef deque<int, allocator<int> > IntDeque ; //Define an iterator for template class deque of ints typedef IntDeque::iterator IntDequeIt ; IntDeque NumbersDeque(2 * MAX_ELEMENTS) ; IntDequeIt itd ; // Initialize vector NumbersVector NumbersVector[0] = 4 ; NumbersVector[1] = 10; NumbersVector[2] = 70 ; NumbersVector[3] = 10 ; NumbersVector[4] = 30 ; NumbersVector[5] = 69 ; NumbersVector[6] = 96 ; NumbersVector[7] = 100; startv = NumbersVector.begin() ; // location of first // element of NumbersVector endv = NumbersVector.end() ; // one past the location // last element of NumbersVector // sort NumbersVector, merge requires the sequences // to be sorted sort(startv, endv) ; // print content of NumbersVector cout << "NumbersVector { " ; for(itv = startv; itv != endv; itv++) cout << *itv << " " ; cout << " }\n" << endl ; // Initialize vector NumbersList for(int i = 0; i < MAX_ELEMENTS; i++) NumbersList.push_back(i) ; first = NumbersList.begin() ; // location of first // element of NumbersList last = NumbersList.end() ; // one past the location // last element of NumbersList // print content of NumbersList cout << "NumbersList { " ; for(itl = first; itl != last; itl++) cout << *itl << " " ; cout << " }\n" << endl ; // merge the elements of NumbersVector // and NumbersList and place the // results in NumbersDeque merge(startv, endv, first, last, NumbersDeque.begin()) ; cout << "After calling merge\n" << endl ; // print content of NumbersDeque cout << "NumbersDeque { " ; for(itd = NumbersDeque.begin(); itd != NumbersDeque.end(); itd++) cout << *itd << " " ; cout << " }\n" << endl ;} Program Output is: NumbersVector { 4 10 10 30 69 70 96 100 } NumbersList { 0 1 2 3 4 5 6 7 } After calling merge NumbersDeque { 0 1 2 3 4 4 5 6 7 10 10 30 69 70 96 100 }
REFERENCESVisual C++ Books On Line: Visual C++ Books:C/C++:Standard C++ Library Reference.
|
Additional query words: STL merge
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |