【问题标题】:Trouble with set_union and set_intersection - C++set_union 和 set_intersection 的问题 - C++
【发布时间】:2014-08-01 06:42:48
【问题描述】:

我目前正在从事一个涉及集合计算的项目。我正在使用函数 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 函数及其参数有关,但我不确定。

【问题讨论】:

    标签: c++ set-intersection set-union


    【解决方案1】:

    改为使用

    #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
    

    【讨论】:

    • 好答案。原因是 set 返回一个 const 迭代器。
    • 非常感谢,已经解决了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2012-03-02
    • 1970-01-01
    • 2019-07-12
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多