rlb*_*ond 85 c++ algorithm stl
我想这是一个简单的问题.我需要做这样的事情:
std::set<int> s1, s2;
s1 = getAnExcitingSet();
std::transform(s1.begin(), s1.end(), std::back_inserter(s2), ExcitingUnaryFunctor());
Run Code Online (Sandbox Code Playgroud)
当然,std::back_inserter因为没有,所以不起作用push_back.
std::inserter还需要一个迭代器?我没有用过,std::inserter所以我不知道该怎么做.
有没有人有想法?
s2,然后稍后对其进行排序.也许那更好?
Joh*_*itb 126
set没有push_back因为元素的位置是由集合的比较器决定的.使用std::inserter并传递它.begin():
std::set<int> s1, s2;
s1 = getAnExcitingSet();
transform(s1.begin(), s1.end(),
std::inserter(s2, s2.begin()), ExcitingUnaryFunctor());
Run Code Online (Sandbox Code Playgroud)
然后在插入迭代器将调用s2.insert(s2.begin(), x)其中x写入时它传递到迭代器的值.该集使用迭代器作为提示插入的位置.你也可以使用s2.end().