82 votes

Fusionner plusieurs éléments d'ensembles dans un seul ensemble

J'aimerais savoir s'il existe une bibliothèque std ou un outil boost pour fusionner facilement le contenu de plusieurs ensembles en un seul.

Dans mon cas, j'ai quelques ensembles d'ints que je voudrais fusionner.

144voto

Nicola Musatti Points 10070

Vous pouvez faire quelque chose comme :

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

50voto

Antonio Pérez Points 2147

On dirait que vous demandez std::set_union .

Exemple:

 #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

29voto

Avec C++17, vous pouvez utiliser la fonction merge de set directement.

C'est mieux lorsque vous voulez que les éléments set2 soient extraits et insérés dans set1 dans le cadre de la fusion.

Comme ci-dessous :

 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)

10voto

Nelstaar Points 177

regardez ce que std::merge peut faire pour vous

cplusplus.com/reference/algorithm/merge

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X