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.

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top