2013-01-16 2 views
0

높일 지금까지STL을 사용하여 튜플의 벡터로 두 벡터를 변환하고 난</p> <pre><code>vector<time> tt; vector<space> xx; </code></pre> <p>내가이 내가 가진 무엇</p> <pre><code>vector<tuple<time,space>> trajectory; </code></pre> <p>좀하고 싶습니다이

std::for_each(boost::make_zip_iterator(
     boost::make_tuple(tt.begin(),xx.begin(), 
     boost::make_tuple(tt.end(),xx.end(), 
     []() { 
      trajectory.push_back(make_tuple(get<0>(),get<1>())); 
     } 
     ); 

나는 더 진행하는 방법을 모르겠다. 한 가지 방법은 내가 http://www.boost.org/doc/libs/1_52_0/libs/iterator/doc/zip_iterator.html#examples에서 zip_func로 펑터를 만들 수 있지만 추가 코드를 작성하고 싶지 않고 람다를 사용하고 싶습니다. 의견이 있으십니까?

답변

0

어떻게 같은 (테스트되지 않은 코드)에 대한 :

std::copy( 
    boost::make_zip_iterator(boost::make_tuple(tt.begin(),xx.begin()), 
    boost::make_zip_iterator(boost::make_tuple(tt.end (),xx.end ()), 
    std::back_inserter(trajectory) 
    ); 

람다에 대한 필요가 없습니다! 샘플 코드에서 다른 튜플을 생성하기 위해서만 튜플을 풀어서 제거 할 수있었습니다.

관련 문제