首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带range-v3的求和向量

带range-v3的求和向量
EN

Stack Overflow用户
提问于 2020-05-14 05:46:14
回答 1查看 371关注 0票数 2

我需要对一些向量求和;也就是说,我想对每个向量的nth元素求和,然后用结果生成一个新的向量。(我已经确保了所有输入向量的大小都相同。)我想用优秀的range-v3库来做这件事。我试过this

代码语言:javascript
复制
// This file is a "Hello, world!" in C++ language by GCC for wandbox.
#include <iostream>
#include <cstdlib>
#include <vector>
#include <cmath>
#include <map>
#include <range/v3/all.hpp>

int main()
{
   std::cout << "Hello, Wandbox!" << std::endl;

  std::vector< int > v1{ 1,1,1};
  std::vector< int> v2{1,1,1};

  auto va = ranges::view::zip( v1, v2 ) 
    | ranges::view::transform(
      [](auto&& tuple){ return ranges::accumulate( tuple, 0.0 ); }
    );

}

我得到一个错误,我不能像这样调用ranges::accumulate。我觉得这是一件很简单的事情,我只是不太明白。

请指教

编辑:我在这里问一个后续问题:How to zip vector of vector with range-v3

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-14 06:01:18

您可以使用std::apply而不是accumulate对元组的值进行求和

代码语言:javascript
复制
auto sum_tuple = [](auto&& tuple) { 
  return std::apply([](auto... v) { 
    return (v + ...); 
  }, tuple );
};

auto va = ranges::views::zip( v1, v2 ) 
        | ranges::views::transform(sum_tuple);

这是一个demo。Show是一个包含2个以上向量的示例。

另外,请注意,为了支持ranges::viewsranges::view已被弃用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61785434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档