繁体   English   中英

C ++:在std :: multiset中存储std :: set_union()输出

[英]C++: Storing std::set_union() output in a std::multiset

我想在两个multisets之间执行union操作。

但是,目前我已经能够找出只将操作的输出存储到std::vector ,然后我必须将向量转换为multiset。

从我的测试转换是非常昂贵的,我想避免这种情况,因为我需要输出作为multiset。

我怎样才能做到这一点?

码:

#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如预期。

你需要一个std::insert_iterator 它的作用类似于std::back_inserter ,但只是插入而不是插入后面。 您可以通过调用std::inserter(c)来创建一个,其中c是目标容器。 这里的第一个例子显示了一个插入std::multiset

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM