遍历向量的向量并附加到新向量

jun*_*210 2 c++ stl

我想遍历vect,在每个元素上调用一个函数,在两个结果之间执行一个运算,并将其附加到一个新的向量上。有一个更好的方法吗?

std::vector<int> vect = {{1,2},{3,4}};
std::vector<double> out(vect.size());
for (int i = 0; i < vect.size(); i++){
       double v = somefunction(vect[i][0]) - somefunction(vect[i][1]);
       out.push_back(v);
    }
Run Code Online (Sandbox Code Playgroud)

lub*_*bgr 5

这就是std::transform可以使用的。

#include <algorithm>

std::vector<double> out(vect.size());

std::transform(vect.cbegin(), vect.cend(), out.begin(), [](const auto& inner)
    { return somefunction(inner.front()) - somefunction(inner.back()); });
Run Code Online (Sandbox Code Playgroud)

假定这vect是一个大小为容器,2具有front()back()成员函数,它们将执行它们期望的操作。