распечатать данные в непересечении для набора & lt; string & gt; A, установите & lt; string & gt; B

Если у меня есть два набора данных

set<string> A;
set<string> B;

использовать set_intersection Я могу получить данные в части пересечения для двух наборов.

Как распечатать данные в непересекающейся части для набора A и набора B, соответственно?

0

Решение

использование std::set_difference или же std::set_symmetric_difference, в зависимости от ваших потребностей.

(Я слишком устал / ленив, чтобы писать пример, но, надеюсь, это станет очевидным после прочтения вышеуказанных ссылок!)

4

Другие решения

set_symmetric_difference помещает результаты в некоторый повторяемый объект.

Таким образом, вы можете скопировать значения в ostream оборачивая его ostream_iterator:

set<string> a;
set<string> b;

set_symmetric_difference(a.begin(), a.end(),
b.begin(), b.end(),
ostream_iterator<string>(cout, "\n"));
1

По вопросам рекламы [email protected]