Olá pessoal. Eu venho tentando usar o algoritmo set_union porém sem sucesso. As referências dizem que o quinto parâmetro pede um output iterator só que no meu código o parâmetro não está sendo aceito e eu não consigo descobrir o por quê.
#include <iostream>
#include <set>
#include <string>
#include <iterator>
#include <algorithm>
int main()
{
const char* let1[] = { "1", "2", "3", "4", "5", "6" };
const char* let2[] = { "1", "3", "5", "7", "8", "9" };
std::set<std::string> set1(let1, let1 + 6), set2(let2, let2 + 6), set3;
set3.get_allocator().allocate(10);
std::cout << "Set1: ";
std::copy(set1.begin(), set1.end(), std::ostream_iterator<std::string, char, std::char_traits<char>>(std::cout, " "));
std::cout << std::endl << std::endl;
std::cout << "Set2: ";
std::copy(set2.begin(), set2.end(), std::ostream_iterator<std::string, char, std::char_traits<char>>(std::cout, " "));
std::cout << std::endl << std::endl;
std::cout << "Union: ";
std::set_union(set1.begin(), set1.end(), set2.begin(), set2.end(), set3.begin());
std::copy(set3.begin(), set3.end(), std::ostream_iterator<std::string, char, std::char_traits<char>>(std::cout, " "));
std::cout << std::endl << std::endl;
return EXIT_SUCCESS;
}
Alguém sabe me dizer por que isso está acontecendo? Quem puder me esclarecer isso eu agradeço.