将函数应用于数组向量的元素

时间:2017-02-05 14:02:19

标签: c++ algorithm vector stl

我列出了一些我编码为std::vector<std::array<double,2>>的内容。这基本上是点(x,y)的列表。我想构建另一个列表但现在是点(x,y ^ 2)。

我可以使用for循环执行此操作,但使用STL算法实现此目的的最佳方法是什么?我试图将std::for_each与lambdas结合起来,但我无法到达那里。

1 个答案:

答案 0 :(得分:3)

std::for_each将函数应用于一系列元素,如果您想将函数应用于范围并将结果存储在另一个范围中,则应使用std::transform。 e.g。

std::transform(src.begin(), src.end(), std::back_inserter(dest),
               [](const std::array<double,2>& arr) { return std::array<double,2>{arr[0], arr[1] * arr[1]}; });