merge
template <
class SinglePassRange1 ,
class SinglePassRange2 ,
class OutputIterator
>
OutputIterator merge ( const SinglePassRange1 & rng1 ,
const SinglePassRange2 & rng2 ,
OutputIterator out );
template <
class SinglePassRange1 ,
class SinglePassRange2 ,
class OutputIterator ,
class BinaryPredicate
>
OutputIterator merge ( const SinglePassRange1 & rng1 ,
const SinglePassRange2 & rng2 ,
OutputIterator out ,
BinaryPredicate pred );
<merge >объединяет два отсортированных диапазона<rng1 >и<rng2 >в один отсортированный диапазон посредством копирования элементов. (0) является стабильным. Возвратная стоимость<out
+ distance ( rng1 ) + distance ( rng2 ) >.
Две версии<merge >отличаются тем, как они сравнивают элементы.
Версия без предиката использует<operator <() >для типа значения диапазона. Версия предиката использует предикат вместо<operator <() >.
Defined in the header file boost / range / algorithm / merge . hpp
For the non-predicate version:
<SinglePassRange1 >является модельюSingle Pass Range Концепт. <SinglePassRange2 >является образцом. Единый проходной диапазон Концепт. <range_value < SinglePassRange1 >:: type >то же, что<range_value < SinglePassRange2 >:: type >. <range_value < SinglePassRange1 >:: type >является образцом<LessThanComparableConcept >. Порядок на объектах<range_value < SinglePassRange1 >:: type >—строгий слабый порядок , как определено в<LessThanComparableConcept >требованиях. <range_value < SinglePassRange1 >:: type >конвертируется в тип в<OutputIterator >наборе типов значений.
For the predicate version:
<SinglePassRange1 >является модельюSingle Pass Range Концепт. <SinglePassRange2 >является образцом. Единый проходной диапазон Концепт. <range_value < SinglePassRange1 >:: type >то же, что<range_value < SinglePassRange2 >:: type >. <BinaryPredicate >является образцом<StrictWeakOrderingConcept >. Тип значения<SinglePassRange1 >конвертируется в оба типа аргументов<BinaryPredicate >. <range_value < SinglePassRange1 >:: type >конвертируется в тип в<OutputIterator >наборе типов значений. Все они<rng1 >находятся в постоянном движении. То есть для каждого соседнего элемента пара<[ x , y ] >из<rng1 >,<y <
x ==
false >. Все<rng2 >в порядке. То есть для каждого соседнего элемента пара<[ x , y ] >из<rng2 >,<y <
x ==
false >. При этом они<rng1 >и<[ out , out
+ distance ( rng1 ) + distance ( rng2 )) >не пересекаются. При этом они не имеют значения<rng2 >и<[ out , out
+ distance ( rng1 ) + distance ( rng2 )) >. <[ out , out
+ distance ( rng1 ) + distance ( rng2 )) >Это действительное число. При этом<rng1 >находится в постоянном движении. Для каждого из них<[ x , y ] >,<rng1 >,<pred ( y , x ) == false >. Все<rng2 >в порядке. То есть для каждого соседнего элемента пара<[ x , y ] >, из<rng2 >,<pred ( y , x ) == false >. При этом они<rng1 >и<[ out , out
+ distance ( rng1 ) + distance ( rng2 )) >не пересекаются. При этом они не имеют значения<rng2 >и<[ out , out
+ distance ( rng1 ) + distance ( rng2 )) >. <[ out , out
+ distance ( rng1 ) + distance ( rng2 )) >Это действительное число. Линейный. Не существует сравнений, если оба<rng1 >и<rng2 >пусты, в противном случае самое большее<distance ( rng1 ) + distance ( rng2 ) - 1 >сравнения.
Статья merge раздела Chapter 1. Range 2.0 Mutating algorithms может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Mutating algorithms ::