Слияние диапазонов в C++
Алгоритм merge пишет объединение двух
отсортированных последовательностей в выходной
диапазон без повторного полного sort.
Нужны три пары итераторов: два входа и начало выхода. Элементы должны идти по неубыванию. Запишем два массива и выведем слитый ряд:
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
int a[] = {1, 4};
int b[] = {2, 3};
std::vector<int> out(4);
std::merge(std::begin(a), std::end(a), std::begin(b), std::end(b), out.begin());
for (int v : out) {
std::cout << v << " ";
}
std::cout << "\n";
return 0;
}
Слейте отсортированные векторы {1, 3, 5} и {2, 4} в новый вектор алгоритмом merge и выведите все элементы.