我正在尝试将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的参数数量减少表明在处理数据时需要做的工作量减少;是实际情况还是捕获数量相当于同等数量的工作,我们只是获得更好的可读性?
答案 0 :(得分:0)
我觉得这很可读,不是吗?
#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());
}