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?
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());
?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With