C++ lambda函数中的表达式何时求值?
给出这个小片段:a和b在编译时是未知的。Map是向量的映射函数,将lambda函数映射到bar的每个元素上。假设fooify()被调用。。。是在执行map()之前将a/b作为常量求值,还是在每次调用lambda时将其求值C++ lambda函数中的表达式何时求值?,c++,lambda,C++,Lambda,给出这个小片段:a和b在编译时是未知的。Map是向量的映射函数,将lambda函数映射到bar的每个元素上。假设fooify()被调用。。。是在执行map()之前将a/b作为常量求值,还是在每次调用lambda时将其求值 Foo::fooify(矢量和条形){ float a=getA(); float b=getB(); 映射(条,[&](浮动c){c*(a/b);}); } 我怀疑a/b将在每次调用lambda函数时进行评估。您可以使用以下方法确保仅对其进行一次评估: Foo::fooify
Foo::fooify(矢量和条形){
float a=getA();
float b=getB();
映射(条,[&](浮动c){c*(a/b);});
}
我怀疑a/b
将在每次调用lambda函数时进行评估。您可以使用以下方法确保仅对其进行一次评估:
Foo::fooify(vector<float>& bar){
float a = getA();
float b = getB();
float ab = a/b;
map(bar, [](float c){c*ab;});
}
Foo::fooify(矢量和条形){
float a=getA();
float b=getB();
浮动ab=a/b;
映射(条,[](浮点c){c*ab;});
}
您如何区分两者的区别?如果你说不出两者的区别,那么你到底在问什么?区别在于,在第一种情况下,将有一个部门运作,而在第二种情况下,将有200万。我只需事先进行计算,就可以很容易地避开这个问题,我只想知道实际会发生什么。