Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why do we need an inserter function call when doing a set_union for a set?

Tags:

c++

stl

i need to make the call to the set_union function of STL like this:

set<int> a1, a2;

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

and not

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

why is that so?

like image 966
Rohit Banga Avatar asked Oct 09 '09 07:10

Rohit Banga


1 Answers

a1.begin() is simply not an output iterator. inserter(a1,a1.begin()) returns an output iterator which will invoke the set's insert function for each element. But I'm not even sure whether the first version is even correct. You iterate over the same set you insert new elements into. (!)

Since you deal with set<> objects already, why don't you simply write

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

?

like image 95
sellibitze Avatar answered Nov 06 '22 09:11

sellibitze