代码之家  ›  专栏  ›  技术社区  ›  ihavenoidea

C++:在STD::多集中存储STD::SETUIN UNION()输出

  •  1
  • ihavenoidea  · 技术社区  · 6 年前

    我想表演一个 union 两人之间的操作 multisets

    std::vector ,然后我必须将向量转换为多重集。

    代码:

    #include <iostream>
    #include <set>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    int main () {
        multiset<int> m, p;
        m.insert(4);
        m.insert(4);
        m.insert(2);
        m.insert(1);
        m.insert(7);
    
        p.insert(2);
        p.insert(2);
        p.insert(2);
        p.insert(1);
        p.insert(5);
    
        vector<int> v;
        set_union(m.begin(), m.end(), p.begin(), p.end(), back_inserter(v));
    
        multiset<int> result(v.begin(), v.end());
    
        multiset<int>::iterator it;
        for (it=result.begin(); it!=result.end(); it++)
            cout << *it << " ";
    
        return 0;
    
    }
    

    1 2 2 2 4 4 5 7

    1 回复  |  直到 6 年前
        1
  •  3
  •   Pete Becker    6 年前

    你需要一个 std::insert_iterator . 它就像 std::back_inserter ,但只是插入,而不是在后面插入。您可以通过调用 std::inserter(c) c 是目标容器。第一个例子 here std::multiset .