在插入向量时使用lambda的返回是否有意义?

时间:2017-07-30 13:48:58

标签: c++ c++11 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的参数数量减少表明在处理数据时需要做的工作量减少;是实际情况还是捕获数量相当于同等数量的工作,我们只是获得更好的可读性?

1 个答案:

答案 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());
}