簡體   English   中英

set_union和set_intersection的問題-C ++

[英]Trouble with set_union and set_intersection - C++

我目前正在從事一個涉及集合計算的項目。 我正在使用函數set_union和set_intersection計算集合的並集和交集。 我的變量是:

    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

它們分別是四個集合的並集和交集:setA,setB,setC和setD。 我的set_union函數如下:

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

我的set_intersection函數如下:

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

編譯時,出現錯誤“從這里需要”,我不確定其含義。 有人可以幫我嗎? 我相信這與set_union和set_intersection函數及其參數有關,但我不確定。

改用

#include <iterator>

//...

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

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

示范例子

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

輸出是

0 1 2 3 4 5 6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM