std :: back_inserter为一个std :: set?

我想这是一个简单的问题。 我需要做这样的事情:

std::set<int> s1, s2; s1 = getAnExcitingSet(); std::transform(s1.begin(), s1.end(), std::back_inserter(s2), ExcitingUnaryFunctor()); 

当然, std::back_inserter不起作用,因为没有push_backstd::inserter也需要一个迭代器? 我没有使用std::inserter所以我不知道该怎么做。

有没有人有一个想法?


当然,我的另一个select是使用s2的vector,然后稍后进行sorting。 也许那样更好?

set没有push_back因为元素的位置由集合的比较器决定。 使用std::inserter并传递它.begin()

 std::set<int> s1, s2; s1 = getAnExcitingSet(); transform(s1.begin(), s1.end(), std::inserter(s2, s2.begin()), ExcitingUnaryFunctor()); 

插入迭代器将调用s2.insert(s2.begin(), x) ,其中x是在写入时传递给迭代器的值。 该集使用迭代器作为插入的提示。 你可以使用s2.end()