我试图使用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
));
与此相比,拉姆达显得相当优雅:
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参数的数量减少表明在交付数据时需要完成的工作量减少;实际上是这种情况,还是捕获的数量相当于一个等量的工作,我们只是获得更好的可读性?
我想你应该在关闭lambda的'}'后添加一个额外的'()'来调用它。 – VTT
@VTT:谢谢,我的坏! – mrclng
这段代码是否必须被绑定到'push_back'调用中?为什么不''*代码在一个变量V */A.push_back(V)中准备一个向量;' –