使用stl和boost将两个向量转换为元组向量

时间:2013-01-16 01:36:25

标签: stl boost-iterators boost-foreach

我有

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。 有什么想法吗?

1 个答案:

答案 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! 在您的示例代码中,您只是为了创建另一个元组而解压缩元组,因此我能够摆脱它。