Ich würde gerne wissen, ob es eine Standardbibliothek oder ein Boost-Tool gibt, mit denen der Inhalt mehrerer Sets einfach zu einem einzigen zusammengeführt werden kann.
In meinem Fall habe ich einige Sätze von Ints, die ich zusammenführen möchte.
Sie können so etwas tun wie:
std::set<int> s1;
std::set<int> s2;
// fill your sets
s1.insert(s2.begin(), s2.end());
std::set_union()
der Leistung sollten Sie die Kosten fürstd::set::insert()
wiederholte Anrufe berücksichtigen .Sieht so aus, als würden Sie danach fragen
std::set_union
.Beispiel:
#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
quelle
Mit C ++ 17 können Sie die
merge
Funktion vonset
direkt verwenden.Dies ist besser, wenn die set2-Elemente im Rahmen des Zusammenführens extrahiert und in set1 eingefügt werden sollen.
Wie unten:
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)
quelle
Schauen Sie, was std :: merge für Sie tun kann
cplusplus.com/reference/algorithm/merge
quelle