我正在尝试新标准的lambda表达式,但仍然不太了解它们.
假设我的代码中有一个lambda,例如在我的主代码中:
int main( int argc, char * argv[])
{
//some code
[](int x, int y)->float
{
return static_cast<float>(x) / static_cast<float>(y);
};
//some more code here
//<---now I want to use my lambda-expression here
}
Run Code Online (Sandbox Code Playgroud)
很明显我可能需要多次使用它,所以答案"只是在那里定义它"不起作用:P所以,我如何在代码中稍后调用这个lambda表达式?我是否必须创建一个函数指针并使用该指针?还是有更好/更简单的方法?
jua*_*nza 20
您可以使用lambda存储lambda auto,或者将其std::function明确指定给兼容的:
auto f1 = [](int x, int y)->float{ ..... };
std::function<float(int,int)> f2 = [](int x, int y)->float{ ..... };
float x = f1(3,4);
auto y = f2(5,6);
Run Code Online (Sandbox Code Playgroud)
如有必要,您可以随后使用f1或f2构建或分配给特定std::function类型:
std::function<float(int,int)> f3 = f1;
Run Code Online (Sandbox Code Playgroud)
For*_*veR 17
auto lambda = [](int x, int y)->float
{
return static_cast<float>(x) / static_cast<float>(y);
};
// code
// call lambda
std::cout << lambda(1, 2) << std::endl;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7056 次 |
| 最近记录: |