Блок задач

9. Шаблоны C++

Сложность 2

Задача «MergingIterator»

Реализовать класс итератора MergingIterator, который реализует классический алгоритм слияния последовательностей, используемый в алгоритме сортировки слиянием.

Входные данные

В качестве аргументов конструктора класс получает несколько пар итераторов (начало, конец) отсортированных диапазонов.

Результат

Если на вход поступили пары итераторов, соответствующие трём диапазонам 1, 2, 7, 3, 5, 8, и 6, 10, 12, то последовательный доступ к итератору должен выдать последовательность 1, 2, 3, 5, 6, 7, 8, 10, 12.