【问题标题】:Convert two vectors into a vector of tuples using stl and boost使用 stl 和 boost 将两个向量转换为元组向量
【发布时间】:2013-01-16 01:36:24
【问题描述】:

我有

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

【问题讨论】:

    标签: stl boost-iterators boost-foreach


    【解决方案1】:

    怎么样(未经测试的代码):

    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! 在您的示例代码中,您解包一个元组只是为了创建另一个元组,所以我能够摆脱它。

    【讨论】:

      猜你喜欢
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      • 2015-01-25
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2021-10-22
      相关资源
      最近更新 更多