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

我不确定如何进一步进行。一种方法是我可以在http://www.boost.org/doc/libs/1_52_0/libs/iterator/doc/zip_iterator.html#examples中制作一个函子作为 zip_func但我不想写额外的代码,我想使用 lambda。有什么想法吗?

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

不需要 lambda!在您的示例代码中,您解包一个元组只是为了创建另一个元组,所以我能够摆脱它。

于 2013-01-16T03:27:45.607 回答