在单个集合中合并多个集合元素

时间:2011-08-17 07:57:35

标签: c++ stl set

我想知道是否有任何std库或boost工具可以轻松地将多个集合的内容合并为一个。

在我的情况下,我有一些我想要合并的整数。

4 个答案:

答案 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可以为你做什么

cplusplus.com/reference/algorithm/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)