Как уже упоминалось в другом ответе, std::inserter
сделает эту работу.В качестве альтернативы вы можете сохранить выходные данные из set_union
в vector
и, если необходимо, создать еще один set
, используя значения из выходных данных vector
.
Однако следует отметить, что этоПодход требует, чтобы вы знали размер вектора во время выполнения (установленного пользователем) или во время компиляции.В последнем случае вы можете использовать std::array
.Если выходные данные неизвестны (то есть рассчитаны), то выходной вектор может быть достаточно большим, чтобы сохранить результаты, и ваша программа потерпит крах (утечка памяти).
#include<iostream>
#include<set>
#include<string>
#include<algorithm>
#include<vector>
int main()
{
std::set<std::string> set1,set2;
set1.insert("sdsd");
set1.insert("sdswewd");
set1.insert("ssd");
set2.insert("sdsd");
set2.insert("sdfewew");
set2.insert("ssd");
std::vector<std::string> output(4);
std::set_union(set1.begin(),set1.end(),set2.begin(),set2.end(),output.begin());
std::set<std::string> set3(output.begin(),output.end());
}
Онлайн пример: https://rextester.com/MUPHB45816
Существует также пример кода здесь , который использует векторы.