Domanda

Attualmente sto lavorando su un progetto che coinvolge calcoli di set.Sto usando le funzioni set_union e set_intersectivection per calcolare l'unione e l'intersezione dei set.Le mie variabili sono:

    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
.

Questi sono i sindacati e le intersezioni, rispettivamente, di quattro set: Seta, Setb, SetC e SetD.La mia funzione Set_UNion è la seguente:

    set_union(AunionC, AunionC+7, BunionD, BunionD+9, finalUnion.begin());
.

e la mia funzione Set_INTESECTION è il seguente:

    set_intersection(AintersectB, AintersectB+4, AintersectC, 
        AintersectC+3, finalIntersection.begin());
.

Quando compilo, ottengo l'errore "richiesto da qui", il significato di cui non sono sicuro.Qualcuno può aiutarmi con questo?Credo che sia qualcosa a che fare con le funzioni Set_union e set_intersectection e i loro parametri, ma non ne sono sicuro.

È stato utile?

Soluzione

Usa invece

#include <iterator>

//...

set_union( AunionC, AunionC+7, BunionD, BunionD+9, 
           std::inserter( finalUnion, finalUnion.begin() ) );
.

e

set_intersection(AintersectB, AintersectB+4, AintersectC, 
    AintersectC+3, std::inserter( finalIntersection,  finalIntersection.begin() ) );
.

Un esempio dimostrativo

#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;
}
.

L'uscita è

0 1 2 3 4 5 6
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top