我正在尝试新标准的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
}
很明显我可能需要多次使用它,所以“只是在那里定义它”的答案不起作用:P所以,我如何在代码中稍后调用这个lambda表达式?我是否必须创建一个函数指针并使用该指针?或者有更好/更简单的方法吗?
答案 0 :(得分:20)
您可以使用auto
存储lambda,或明确地将其分配给兼容的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);
如有必要,您可以随后使用f1
或f2
构建或指定特定的std::function
类型:
std::function<float(int,int)> f3 = f1;
答案 1 :(得分:16)
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;