【问题标题】:Applying a function to elements of a vector of arrays将函数应用于数组向量的元素
【发布时间】:2017-02-05 14:02:19
【问题描述】:

我有一个我编码成std::vector<std::array<double,2>> 的东西列表。这基本上是点 (x,y) 的列表。我想构建另一个列表,但现在是点 (x,y^2)。

我可以使用 for 循环来做到这一点,但是使用 STL 算法实现这一点的最佳方法是什么?我试图将std::for_each 与 lambdas 结合使用,但我还不能到达那里。

【问题讨论】:

  • 你应该发布你没有工作的尝试这样做。否则答案是“使用 std::for_each”

标签: c++ algorithm vector stl


【解决方案1】:

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

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]}; });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-13
    • 2018-07-17
    • 2013-08-28
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    相关资源
    最近更新 更多