我試圖使用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)中準備一個向量;' –