0

私は持っている

vector<time> tt;
vector<space> xx;

私は取得したいです

vector<tuple<time,space>> trajectory;

これは私がこれまでに持っているものです

  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>()));
        }
        );

さらに進む方法がわかりません。1 つの方法は、 http: //www.boost.org/doc/libs/1_52_0/libs/iterator/doc/zip_iterator.html#examples で zip_func としてファンクターを作成することですが、余分なコードを書きたくないので、ラムダを使いたい 何かご意見は?

4

1 に答える 1

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)
    );

ラムダは必要ありません!サンプル コードでは、別のタプルを作成するためだけにタプルをアンパックしているので、それを取り除くことができました。

于 2013-01-16T03:27:45.607 に答える