Справочник по C/C++
merge()

template <class InIter1, class InIter2, class OutIter>
	OutIter merge(InIter1 start1, InIter1 end1,
			InIter2 start2, InIter2 end2, OutIter result);
template <class InIter1, class InIter2, class OutIter, class Comp>
	OutIter merge(InIter1 start1, InIter1 end1,
			InIter2 start2, InIter2 end2, OutIter result, Comp cmpfn);

Описание

Оъединяет две упорядоченные последовательности, помещая результат в третью последовательность

Алгоритм merge() объединяет две упорядоченные последовательности, помещая результат в третью последовательность. Объединяемые последовательности задаются параметрами start1, endl и start2, end2. Результат помещается в последовательность, адресуемую параметром result. Возвращается итератор, указывающий на конец результирующей последовательности.

Вторая форма позволяет задать функцию сравнения, которая определяет, когда один элемент меньше другого,