<!--
    Licensed to the Apache Software  Foundation (ASF) under one or more
    contributor  license agreements.  See  the NOTICE  file distributed
    with  this  work  for  additional information  regarding  copyright
    ownership.   The ASF  licenses this  file to  you under  the Apache
    License, Version  2.0 (the  License); you may  not use  this file
    except in  compliance with the License.   You may obtain  a copy of
    the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the  License is distributed on an  "AS IS" BASIS,
    WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
    implied.   See  the License  for  the  specific language  governing
    permissions and limitations under the License.

    Copyright 1999-2007 Rogue Wave Software, Inc.
-->

<HTML>
<HEAD>
<TITLE>merge()</TITLE>
<LINK REL=StyleSheet HREF="../rw.css" TYPE="text/css" TITLE="Apache stdcxx Stylesheet"></HEAD>
<BODY BGCOLOR=#FFFFFF>
<A HREF="memory-h.html"><IMG SRC="images/bprev.gif" WIDTH=20 HEIGHT=21 ALT="Previous file" BORDER=O></A><A HREF="noframes.html"><IMG SRC="images/btop.gif" WIDTH=56 HEIGHT=21 ALT="Top of Document" BORDER=O></A><A HREF="booktoc.html"><IMG SRC="images/btoc.gif" WIDTH=56 HEIGHT=21 ALT="Contents" BORDER=O></A><A HREF="tindex.html"><IMG SRC="images/bindex.gif" WIDTH=56 HEIGHT=21 ALT="Index page" BORDER=O></A><A HREF="messages.html"><IMG SRC="images/bnext.gif" WIDTH=25 HEIGHT=21 ALT="Next file" BORDER=O></A><DIV CLASS="DOCUMENTNAME"><B>Apache C++ Standard Library Reference Guide</B></DIV>
<H2>merge()</H2>
<P><B>Library:</B>&nbsp;&nbsp;<A HREF="2-9.html">Algorithms</A></P>

<PRE><HR><B><I>Function</I></B><HR></PRE>

<UL>
<LI><A HREF="#sec1">Local Index</A></LI>
<LI><A HREF="#sec2">Summary</A></LI>
<LI><A HREF="#sec3">Synopsis</A></LI>
<LI><A HREF="#sec4">Description</A></LI>
<LI><A HREF="#sec5">Complexity</A></LI>
<LI><A HREF="#sec6">Example</A></LI>
<LI><A HREF="#sec7">See Also</A></LI>
<LI><A HREF="#sec8">Standards Conformance</A></LI>
</UL>
<A NAME="sec1"><H3>Local Index</H3></A>
No Entries
<A NAME="sec2"><H3>Summary</H3></A>
<P>Algorithm that merges two sorted sequences into a third disjoint sorted sequence</P>
<A NAME="sec3"><H3>Synopsis</H3></A>

<PRE>#include &lt;algorithm&gt;

namespace std {
  template &lt;class InputIterator1, class InputIterator2,
            class OutputIterator&gt;
  OutputIterator
  merge(InputIterator1 start1, InputIterator1 finish1,
        InputIterator2 start2, InputIterator2 finish2,
        OutputIterator result);

  template &lt;class InputIterator1, class InputIterator2,
            class OutputIterator, class Compare&gt;
  OutputIterator
  merge(InputIterator1 start1, InputIterator1 finish1,
        InputIterator2 start2, InputIterator2 finish2,
        OutputIterator result, Compare comp);
}
</PRE>
<A NAME="sec4"><H3>Description</H3></A>
<P>The <SAMP>merge()</SAMP> algorithm merges two sorted sequences, specified by <SAMP>[start1, finish1)</SAMP> and <SAMP>[start2, finish2)</SAMP>, into the sequence specified by <SAMP>[result, result + (finish1 - start1) + (finish2 - start2))</SAMP>. The first version of the <SAMP>merge()</SAMP> algorithm uses <SAMP>operator&lt;()</SAMP> to compare elements in the two sequences. The second version uses the function object <SAMP>comp</SAMP>. If a comparison function is provided, <SAMP>merge()</SAMP> assumes that both sequences were sorted using the same ordering as the one given by the function object.</P>
<P>The merge is stable. This means that if the two original sequences contain equivalent elements, the elements from the first sequence always precede the matching elements from the second in the resulting sequence. The size of the result of a <SAMP>merge()</SAMP> is equal to the sum of the sizes of the two argument sequences. <SAMP>merge()</SAMP> returns an iterator that points to the end of the resulting sequence (in other words, <SAMP>result + (finish1 - start1) + (finish2 -start2)</SAMP>). The result of <SAMP>merge()</SAMP> is undefined if the resulting range overlaps with either of the original ranges. </P>
<P><SAMP>merge()</SAMP> assumes that all iterators in the range <SAMP>[result, result + (finish1 - start1) + (finish2 -</SAMP> <SAMP>start2)]</SAMP> are dereferenceable, unless <SAMP>result</SAMP> has been adapted by an insert iterator. </P>
<A NAME="sec5"><H3>Complexity</H3></A>
<P>At most <SAMP>(finish - start1) + (finish2 - start2) - 1</SAMP> comparisons are performed.</P>
<A NAME="sec6"><H3>Example</H3></A>

<UL><PRE>//
//  merge.cpp
//

#include &lt;algorithm&gt;    // advance, copy, inplace_merge, merge
#include &lt;functional&gt;   // less
#include &lt;iostream&gt;     // cout
#include &lt;iterator&gt;     // back_inserter, ostream_iterator
#include &lt;vector&gt;       // vector



int main ()
{
    typedef std::vector&lt;int, std::allocator&lt;int&gt; &gt; Vector;

    const Vector::value_type d1[] = { 1, 2, 3, 4};
    const Vector::value_type d2[] = { 11, 13, 15, 17, 
                                      12, 14, 16, 18};

    // Set up two vectors.
    Vector v1 (d1 + 0, d1 + sizeof d1 / sizeof *d1);
    Vector v2 (d1 + 0, d1 + sizeof d1 / sizeof *d1);

    // Set up four destination vectors.
    Vector v3 (d2 + 0, d2 + sizeof d2 / sizeof *d2);
    Vector v4 (v3);
    Vector v5 (v3);
    Vector v6 (v3);

    // Set up one empty vector.
    Vector v7;

    // Merge v1 with v2.
    std::merge (v1.begin (), v1.end (),
                v2.begin (), v2.end (), v3.begin ());

    // Now use comparator.
    std::merge (v1.begin (), v1.end (),
                v2.begin (), v2.end (), v4.begin (), 
                std::less&lt;int&gt;());

    // In place merge v5.
    Vector::iterator mid = v5.begin ();
    std::advance (mid, 4);   // equivalent to mid += 4 
                             // but more generic
    std::inplace_merge (v5.begin (), mid, v5.end ());

    // Now use a comparator on v6.
    mid = v6.begin ();
    std::advance (mid, 4);   // equivalent to mid += 4 
                             // but more generic
    std::inplace_merge (v6.begin (), mid, v6.end (), 
                        std::less&lt;int&gt;());    

    // Merge v1 and v2 to empty vector using insert iterator.
    std::merge (v1.begin (), v1.end (),
                v2.begin (), v2.end (), 
                std::back_inserter (v7));

    // Copy all to cout.
    std::ostream_iterator&lt;int, char, std::char_traits&lt;char&gt; &gt;
        out (std::cout," ");

    std::copy (v1.begin (), v1.end (), out);
    std::cout &lt;&lt; std::endl;
    std::copy (v2.begin(), v2.end (), out);
    std::cout &lt;&lt; std::endl;
    std::copy (v3.begin (), v3.end (), out);
    std::cout &lt;&lt; std::endl;
    std::copy (v4.begin (), v4.end (), out);
    std::cout &lt;&lt; std::endl;
    std::copy (v5.begin (), v5.end (), out);
    std::cout &lt;&lt; std::endl;
    std::copy (v6.begin (),v6.end (), out);
    std::cout &lt;&lt; std::endl;
    std::copy (v7.begin (), v7.end (), out);
    std::cout &lt;&lt; std::endl;

    // Merge v1 and v2 to cout.
    std::merge (v1.begin (), v1.end (), 
                v2.begin (), v2.end (), out);

    return 0;
}


Program Output:
</PRE></UL>
<UL><PRE>1 2 3 4 
1 2 3 4 
1 1 2 2 3 3 4 4 
1 1 2 2 3 3 4 4 
11 12 13 14 15 16 17 18 
11 12 13 14 15 16 17 18 
1 1 2 2 3 3 4 4 
1 1 2 2 3 3 4 4 
</PRE></UL>
<A NAME="sec7"><H3>See Also</H3></A>
<P><A HREF="containers.html">Containers</A>, <SAMP><A HREF="inplace-merge.html">inplace_merge()</A></SAMP></P>
<A NAME="sec8"><H3>Standards Conformance</H3></A>
<P><I>ISO/IEC 14882:1998 -- International Standard for Information Systems -- Programming Language C++, Section 25.3.4</I></P>

<BR>
<HR>
<A HREF="memory-h.html"><IMG SRC="images/bprev.gif" WIDTH=20 HEIGHT=21 ALT="Previous file" BORDER=O></A><A HREF="noframes.html"><IMG SRC="images/btop.gif" WIDTH=56 HEIGHT=21 ALT="Top of Document" BORDER=O></A><A HREF="booktoc.html"><IMG SRC="images/btoc.gif" WIDTH=56 HEIGHT=21 ALT="Contents" BORDER=O></A><A HREF="tindex.html"><IMG SRC="images/bindex.gif" WIDTH=56 HEIGHT=21 ALT="Index page" BORDER=O></A><A HREF="messages.html"><IMG SRC="images/bnext.gif" WIDTH=20 HEIGHT=21 ALT="Next file" BORDER=O></A>

<!-- Google Analytics tracking code -->
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
    _uacct = "UA-1775151-1";
    urchinTracker();
</script>
<!-- end of Google Analytics tracking code -->

</BODY>
</HTML>
