我有
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。 有什么想法吗?
答案 0 :(得分: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! 在您的示例代码中,您只是为了创建另一个元组而解压缩元组,因此我能够摆脱它。