具有 range-v3 的总和向量

Sum vector with range-v3

我需要总结一些向量;也就是说,我想对每个向量的 nth 元素求和,并用结果创建一个新向量。 (我已经确保输入向量的大小都相同。)我想用优秀的 range-v3 library. I've tried this:

来做到这一点
// 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 的错误。我觉得这是一件我不太明白的简单事情。

请指教

编辑: 我在这里问一个后续问题:

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

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。还显示了一个包含 2 个以上向量的示例。

另外,请注意 ranges::view 已被弃用,取而代之的是 ranges::views