Зачем нам нужен вызов функции вставки при выполнении set_union для набора? - PullRequest
3 голосов
/ 09 октября 2009

Мне нужно вызвать функцию set_union в STL следующим образом:

set<int> a1, a2;

set_union(a1.begin(), a1.end(), a2.begin(), a2.end(), inserter(a1, a1.begin());

а не

set_union(a1.begin(), a1.end(), a2.begin(), a2.end(), a1.begin());

почему это так?

1 Ответ

9 голосов
/ 09 октября 2009

a1.begin () просто не является выходным итератором. insertter (a1, a1.begin ()) возвращает выходной итератор, который будет вызывать функцию вставки набора для каждого элемента. Но я даже не уверен, верна ли первая версия. Вы перебираете тот же набор, в который вставляете новые элементы. (!)

Поскольку вы уже имеете дело с объектами set <>, почему бы вам просто не написать

a1.insert(a2.begin(),a2.end());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...