我想知道是否有任何std库或boost工具可以轻松地将多个集合的内容合并为一个。
在我的情况下,我有一些我想要合并的整数。
答案 0 :(得分:110)
您可以执行以下操作:
std::set<int> s1;
std::set<int> s2;
// fill your sets
s1.insert(s2.begin(), s2.end());
答案 1 :(得分:35)
您似乎要求std::set_union
。
示例:
#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
答案 2 :(得分:9)
看看std :: merge可以为你做什么
答案 3 :(得分:8)
使用C ++ 17,您可以直接使用merge
set
函数。
这是更好的,当你想要提取的set2元素&amp;作为合并的一部分插入到set1中。
如下所示:
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)