web-dev-qa-db-ja.com

単一のセットに複数のセット要素をマージする

複数のセットのコンテンツを1つのセットに簡単にマージするためのstdライブラリまたはブーストツールがあるかどうかを知りたいです。

私の場合、統合したいintのセットがいくつかあります。

55
codeJack

次のようなことができます:

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

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
35
Antonio Pérez

std :: mergeができることを見てください

cplusplus.com/reference/algorithm/merge

10
Nelstaar

C++ 17では、mergeset関数を直接使用できます。

これは、マージの一部としてset2要素を抽出して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)