Объединения нескольких наборов в единый набор
Я хотел бы знать, есть ли какая-либо библиотека std или инструмент boost, чтобы легко объединить содержимое нескольких наборов в один.
в моем случае у меня есть несколько наборов ints, которые я хотел бы объединить.
4 ответа:
вы можете сделать что-то вроде:
std::set<int> s1; std::set<int> s2; // fill your sets s1.insert(s2.begin(), s2.end());
похоже, вы просите
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
С C++17, вы можете использовать
merge
функцииset
напрямую.это лучше, когда вы хотите, чтобы элементы 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)