when是lambda函数中的一个表达式
when is an expression in a lambda function evaluated?
给定这个小片段:a和b在编译时是未知的。Map是向量的映射函数,将lambda函数映射到条形图的每个元素上。假设调用了fooify()。。。在执行map()之前,是否会将a/b计算为常量,还是每次调用lambda时都会对其进行计算?
Foo::fooify(vector<float>& bar){
float a = getA();
float b = getB();
map(bar, [&](float c){c*(a/b);});
}
我怀疑每次调用lambda函数时都会计算a/b
。您可以使用以下方法确保只评估一次:
Foo::fooify(vector<float>& bar){
float a = getA();
float b = getB();
float ab = a/b;
map(bar, [](float c){c*ab;});
}
相关文章:
- 当一个值是非常量但用常量表达式初始化时使用constexpr
- 有没有办法一次声明相同类型的多个对象,并通过一个表达式立即使用相同的右值初始化它们?
- 如何在一个表达式中生成并返回结果?
- 为什么一个表达式中的 std::string 连接给出的结果与逐个字符不同的结果?
- CUDA C++:文件中 kernel.cu 应有一个表达式
- 如何在一个表达式中将 char[] 转换为向量<char>(可移植)
- 无限数组C++在一个表达式中使用两个新值调整数组大小
- 期待一个表达式
- 在不使用lambda的情况下,我如何整齐地创建一个表达式的函数
- C++11-返回一个表达式以确定类型
- 用一个表达式包装变元宏中的每个元素
- 我有 3 个错误:期望一个")",期望一个表达式,long 类型的参数与 U32 类型的参数不兼容
- 计算一个表达式来计算循环
- 为什么 gdb 不能在 !=/== 和 &&/||组合在一个表达式中?
- 在 C++11 中的一个表达式中对同一变量进行双重赋值
- when是lambda函数中的一个表达式
- 如何写一个字符串,看看它是否是一个表达式
- c++标准算法,用最低优先级的运算符分隔一个表达式为两个表达式
- 我如何写一个表达式,在GDB的指针
- 我如何解析一个表达式嵌套括号与boost.Spirit