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_back
。 std::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()
。