Функция set_union
Функция set_union из заголовочного файла <algorithm>
выполняет объединение двух отсортированных диапазонов.
В первый и второй параметры мы передаем итераторы начала
первого и второго диапазонов, в третий и четвертый - итераторы
конца первого и второго диапазонов, а в пятый - итератор
начала диапазона, куда будет записан результат.
Функция возвращает итератор на конец результирующего диапазона.
Оба исходных диапазона должны быть отсортированы по возрастанию,
иначе поведение не определено.
Синтаксис
set_union(first1, last1, first2, last2, result)
Пример
Давайте объединим два отсортированных вектора
{1, 3, 5} и {2, 3, 6} в один:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> a = {1, 3, 5};
vector<int> b = {2, 3, 6};
vector<int> res;
set_union(a.begin(), a.end(), b.begin(), b.end(),
back_inserter(res));
for (int x : res)
cout << x << " ";
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 3 5 6
Пример
Давайте объединим два отсортированных вектора
{1, 2, 3} и {3, 4, 5}, записав результат
в заранее подготовленный вектор:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> a = {1, 2, 3};
vector<int> b = {3, 4, 5};
vector<int> res(a.size() + b.size());
auto it = set_union(a.begin(), a.end(), b.begin(), b.end(),
res.begin());
res.erase(it, res.end());
for (int x : res)
cout << x << " ";
cout << endl;
return 0;
}
Результат выполнения кода:
1 2 3 4 5
Смотрите также
-
функция
set_intersection,
которая находит пересечение двух отсортированных диапазонов -
функция
set_difference,
которая находит разность двух отсортированных диапазонов -
функция
merge,
которая сливает два отсортированных диапазона без удаления дубликатов -
функция
includes,
которая проверяет, содержится ли один диапазон в другом