将多个集合元素合并到一个集合中

我想知道是否有任何标准库或提升工具,以轻松合并到一个单一的多个集的内容。

在我的例子中,我有一些要合并的整数集。

76713 次浏览

You can do something like:

std::set<int> s1;
std::set<int> s2;
// fill your sets
s1.insert(s2.begin(), s2.end());

Looks like you are asking for std::set_union.

Example:

#include <set>
#include <algorithm>


std::set<int> s1;
std::set<int> s2;
std::set<int> s3;


// Fill s1 and s2


std::set_union(std::begin(s1), std::end(s1),
std::begin(s2), std::end(s2),
std::inserter(s3, std::begin(s3)));


// s3 now contains the union of s1 and s2

look what std::merge can do for you

cplusplus.com/reference/algorithm/merge

With C++17, you can use merge function of set directly.

This is better, when you want the set2 elements extracted & inserted into set1 as part of merging.

Like below:

set<int> set1{ 1, 2, 3 };
set<int> set2{ 1, 4, 5 };


// set1 has     1 2 3       set2 has     1 4 5
set1.merge(set2);
// set1 now has 1 2 3 4 5   set2 now has 1   (duplicates are left in the source, set2)