I guess this is a simple question. I need to do something like this:
std::set<int> s1, s2;
s1 = getAnExcitingSet();
std::transform(s1.begin(), s1.end(), std::back_inserter(s2), ExcitingUnaryFunctor());
Of course, std::back_inserter doesn’t work since there’s no push_back.
std::inserter also needs an iterator? I haven’t used std::inserter so I’m not sure what to do.
Does anyone have an idea?
Of course, my other option is to use a vector for s2, and then just sort it later. Maybe that’s better?
setdoesn’t havepush_backbecause the position of an element is determined by the comparator of the set. Usestd::inserterand pass it.begin():The insert iterator will then call
s2.insert(s2.begin(), x)wherexis the value passed to the iterator when written to it. The set uses the iterator as a hint where to insert. You could as-well uses2.end().