Problemas con Set_Union y Set_Intersection - C ++
-
26-12-2019 - |
Pregunta
Actualmente estoy trabajando en un proyecto que involucra cálculos establecidos.Estoy usando las funciones Set_Union y Set_Intersection para calcular la Unión y la intersección de los conjuntos.Mis variables son:
int AunionB[8];
int AunionC[7]; // define AunionC
int BunionD[9]; // define BunionD
int AintersectB[4]; // define AintersectB
int AintersectC[3]; // define AintersectC
set<int> finalUnion; // final union of A, B, C, D
set<int> finalIntersection; // final intersection of A, B, C, D
Estos son los sindicatos e intersecciones, respectivamente, de cuatro conjuntos: SETA, SetB, Setc y Setd.Mi función Set_Union es la siguiente:
set_union(AunionC, AunionC+7, BunionD, BunionD+9, finalUnion.begin());
y mi función Set_Intersection es la siguiente:
set_intersection(AintersectB, AintersectB+4, AintersectC,
AintersectC+3, finalIntersection.begin());
Cuando compile, recibo el error "requerido desde aquí", el significado de los que no estoy seguro.¿Puede alguien por favor ayudarme con esto?Creo que es algo que ver con las funciones de set_union y set_intersion y sus parámetros, pero no estoy seguro.
Solución
Uso en lugar
#include <iterator>
//...
set_union( AunionC, AunionC+7, BunionD, BunionD+9,
std::inserter( finalUnion, finalUnion.begin() ) );
y
set_intersection(AintersectB, AintersectB+4, AintersectC,
AintersectC+3, std::inserter( finalIntersection, finalIntersection.begin() ) );
un ejemplo demostrativo
#include <iostream>
#include <algorithm>
#include <iterator>
#include <set>
int main()
{
int a[] = { 1, 3, 5 };
int b[] = { 0, 2, 4, 6 };
std::set<int> s;
std::set_union( std::begin( a ), std::end( a ),
std::begin( b ), std::end( b ),
std::inserter( s, s.begin() ) );
for ( int x : s ) std::cout << x << ' ';
std::cout << std::endl;
return 0;
}
La salida es
0 1 2 3 4 5 6