Объединить несколько наборов элементов в один набор - PullRequest
55 голосов
/ 17 августа 2011

Я хотел бы знать, есть ли какая-либо библиотека std или инструмент для повышения, позволяющий легко объединить содержимое нескольких наборов в один.

В моем случае у меня есть несколько наборов целых, которые я хотел бы объединить.

Ответы [ 4 ]

111 голосов
/ 17 августа 2011

Вы можете сделать что-то вроде:

std::set<int> s1;
std::set<int> s2;
// fill your sets
s1.insert(s2.begin(), s2.end());
35 голосов
/ 17 августа 2011

Похоже, вы просите 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
10 голосов
/ 17 августа 2011

посмотрите, что может сделать для вас std :: merge

cplusplus.com / reference / алгоритма / merge

9 голосов
/ 08 июня 2018

С 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...