我列出了一些我编码为std::vector<std::array<double,2>>
的内容。这基本上是点(x,y)的列表。我想构建另一个列表但现在是点(x,y ^ 2)。
我可以使用for循环执行此操作,但使用STL算法实现此目的的最佳方法是什么?我试图将std::for_each
与lambdas结合起来,但我无法到达那里。
答案 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]}; });