code

std :: set에 대한 std :: back_inserter?

codestyles 2020. 9. 22. 08:14
반응형

std :: set에 대한 std :: back_inserter?


이것은 간단한 질문이라고 생각합니다. 다음과 같이해야합니다.

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하지 않아서 어떻게해야할지 모르겠습니다.

누구나 아이디어가 있습니까?


물론 내 다른 옵션은에 벡터를 사용한 s2다음 나중에 정렬하는 것입니다. 그게 더 좋을까요?


setpush_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().

참고 URL : https://stackoverflow.com/questions/908272/stdback-inserter-for-a-stdset

반응형