插入向量时,使用lambda的返回而不是函数的返回是否有意义?



我正在尝试使用lambda进行频繁发生的向量插入,以防止调用等效函数:

std::vector<vector<double>> A
// There are several loops like this with different conditions
for(auto i(0); i<100; ++i)
A.push_back(myFunction(
lots, 
of, 
parameters, 
including, 
index, 
and, 
condition
));

与此相比,lambda似乎相当优雅:

auto myLambda = [&](size_t loopIndex, double condition) -> vector<double> {
//body identical to that of myFunction        
}
for(auto i(0); i<100; ++i)
A.push_back(myLambda(i, 3.141))
for(auto i(0); i<100; ++i)
A.push_back(myLambda(i, 42))

someFunction的返回和主体与 lambda 的返回和主体相同。

这种方法有什么缺点吗? 与函数相比,lambda 的参数数量减少,这表明在移交数据时需要做的工作更少;实际情况是否如此,或者捕获是否相当于等量的工作量,我们只是获得了更好的可读性?

我认为这很有可读性,不是吗?

#include <vector>
std::vector<std::vector<double>> A;
void test()
{
// lots of logic here
auto compute = [&]() -> std::vector<double> {
// compute logic here
};
A.push_back(compute());
}

最新更新