<codeclass="computeroutput"><spanclass="identifier">merge</span></code> combines two sorted
ranges <codeclass="computeroutput"><spanclass="identifier">rng1</span></code> and <codeclass="computeroutput"><spanclass="identifier">rng2</span></code> into a single sorted range by
The two versions of <codeclass="computeroutput"><spanclass="identifier">merge</span></code>
differ by how they compare the elements.
</p>
<p>
The non-predicate version uses the <codeclass="computeroutput"><spanclass="keyword">operator</span><spanclass="special"><()</span></code> for the range value type. The predicate
version uses the predicate instead of <codeclass="computeroutput"><spanclass="keyword">operator</span><spanclass="special"><()</span></code>.
Defined in the header file <codeclass="computeroutput"><spanclass="identifier">boost</span><spanclass="special">/</span><spanclass="identifier">range</span><spanclass="special">/</span><spanclass="identifier">algorithm</span><spanclass="special">/</span><spanclass="identifier">merge</span><spanclass="special">.</span><spanclass="identifier">hpp</span></code>
<codeclass="computeroutput"><spanclass="identifier">SinglePassRange1</span></code> is
a model of the <aclass="link"href="../../../concepts/single_pass_range.html"title="Single Pass Range">Single
Pass Range</a> Concept.
</li>
<liclass="listitem">
<codeclass="computeroutput"><spanclass="identifier">SinglePassRange2</span></code> is
a model of the <aclass="link"href="../../../concepts/single_pass_range.html"title="Single Pass Range">Single
Pass Range</a> Concept.
</li>
<liclass="listitem">
<codeclass="computeroutput"><spanclass="identifier">range_value</span><spanclass="special"><</span><spanclass="identifier">SinglePassRange1</span><spanclass="special">>::</span><spanclass="identifier">type</span></code> is the same as <codeclass="computeroutput"><spanclass="identifier">range_value</span><spanclass="special"><</span><spanclass="identifier">SinglePassRange2</span><spanclass="special">>::</span><spanclass="identifier">type</span></code>.
</li>
<liclass="listitem">
<codeclass="computeroutput"><spanclass="identifier">range_value</span><spanclass="special"><</span><spanclass="identifier">SinglePassRange1</span><spanclass="special">>::</span><spanclass="identifier">type</span></code> is a model of the <codeclass="computeroutput"><spanclass="identifier">LessThanComparableConcept</span></code>.
</li>
<liclass="listitem">
The ordering on objects of <codeclass="computeroutput"><spanclass="identifier">range_value</span><spanclass="special"><</span><spanclass="identifier">SinglePassRange1</span><spanclass="special">>::</span><spanclass="identifier">type</span></code>
is a <spanclass="bold"><strong><spanclass="emphasis"><em>strict weak ordering</em></span></strong></span>,
as defined in the <codeclass="computeroutput"><spanclass="identifier">LessThanComparableConcept</span></code>
requirements.
</li>
<liclass="listitem">
<codeclass="computeroutput"><spanclass="identifier">range_value</span><spanclass="special"><</span><spanclass="identifier">SinglePassRange1</span><spanclass="special">>::</span><spanclass="identifier">type</span></code> is convertible to a type in
<codeclass="computeroutput"><spanclass="identifier">OutputIterator</span></code>'s set
of value types.
</li>
</ul></div>
<p>
<spanclass="bold"><strong>For the predicate version:</strong></span>
<codeclass="computeroutput"><spanclass="identifier">SinglePassRange1</span></code> is
a model of the <aclass="link"href="../../../concepts/single_pass_range.html"title="Single Pass Range">Single
Pass Range</a> Concept.
</li>
<liclass="listitem">
<codeclass="computeroutput"><spanclass="identifier">SinglePassRange2</span></code> is
a model of the <aclass="link"href="../../../concepts/single_pass_range.html"title="Single Pass Range">Single
Pass Range</a> Concept.
</li>
<liclass="listitem">
<codeclass="computeroutput"><spanclass="identifier">range_value</span><spanclass="special"><</span><spanclass="identifier">SinglePassRange1</span><spanclass="special">>::</span><spanclass="identifier">type</span></code> is the same as <codeclass="computeroutput"><spanclass="identifier">range_value</span><spanclass="special"><</span><spanclass="identifier">SinglePassRange2</span><spanclass="special">>::</span><spanclass="identifier">type</span></code>.
</li>
<liclass="listitem">
<codeclass="computeroutput"><spanclass="identifier">BinaryPredicate</span></code> is
a model of the <codeclass="computeroutput"><spanclass="identifier">StrictWeakOrderingConcept</span></code>.
value type is convertible to both <codeclass="computeroutput"><spanclass="identifier">BinaryPredicate</span></code>'s
argument types.
</li>
<liclass="listitem">
<codeclass="computeroutput"><spanclass="identifier">range_value</span><spanclass="special"><</span><spanclass="identifier">SinglePassRange1</span><spanclass="special">>::</span><spanclass="identifier">type</span></code> is convertible to a type in
<codeclass="computeroutput"><spanclass="identifier">OutputIterator</span></code>'s set
The elements of <codeclass="computeroutput"><spanclass="identifier">rng1</span></code>
are in ascending order. That is, for each adjacent element pair <codeclass="computeroutput"><spanclass="special">[</span><spanclass="identifier">x</span><spanclass="special">,</span><spanclass="identifier">y</span><spanclass="special">]</span></code> of <codeclass="computeroutput"><spanclass="identifier">rng1</span></code>,
The elements of <codeclass="computeroutput"><spanclass="identifier">rng2</span></code>
are in ascending order. That is, for each adjacent element pair <codeclass="computeroutput"><spanclass="special">[</span><spanclass="identifier">x</span><spanclass="special">,</span><spanclass="identifier">y</span><spanclass="special">]</span></code> of <codeclass="computeroutput"><spanclass="identifier">rng2</span></code>,
are in ascending order. That is, for each adjacent element pair <codeclass="computeroutput"><spanclass="special">[</span><spanclass="identifier">x</span><spanclass="special">,</span><spanclass="identifier">y</span><spanclass="special">]</span></code>, of <codeclass="computeroutput"><spanclass="identifier">rng1</span></code>,
are in ascending order. That is, for each adjacent element pair <codeclass="computeroutput"><spanclass="special">[</span><spanclass="identifier">x</span><spanclass="special">,</span><spanclass="identifier">y</span><spanclass="special">]</span></code>, of <codeclass="computeroutput"><spanclass="identifier">rng2</span></code>,
Linear. There are no comparisons if both <codeclass="computeroutput"><spanclass="identifier">rng1</span></code>
and <codeclass="computeroutput"><spanclass="identifier">rng2</span></code> are empty, otherwise
at most <codeclass="computeroutput"><spanclass="identifier">distance</span><spanclass="special">(</span><spanclass="identifier">rng1</span><spanclass="special">)</span><spanclass="special">+</span><spanclass="identifier">distance</span><spanclass="special">(</span><spanclass="identifier">rng2</span><spanclass="special">)</span><spanclass="special">-</span><spanclass="number">1</span></code>