lambda可以重复使用吗?我想把这个lambda称为几次.但我找不到给它命名的方法.
[]() { cout << "lambda is called"; };
Run Code Online (Sandbox Code Playgroud)
没有像这样调用lambda的目的是什么?编译器不会对上面的代码大喊大叫,但它没用.我对吗?
您可以使用说明auto符为其命名:
auto f = []() { cout << "lambda is called"; };
Run Code Online (Sandbox Code Playgroud)
这将允许您使用它来调用它f().但请记住,未指定lambda的类型,因此如果要将其传递给函数,则需要使用模板(或转换为std::function<void()>).
template <typename F>
void three_times(F g) {
g(); g(); g();
}
Run Code Online (Sandbox Code Playgroud)
如果要重用lambda,则需要将其分配给变量.
auto lambda = []() { cout << "lambda is called"; };
Run Code Online (Sandbox Code Playgroud)
给你一个名为的对象lambda,你可以调用它operator ()来执行lambda的主体
lambda();
Run Code Online (Sandbox Code Playgroud)
是的lamda可以重复使用.请参阅下面的示例
#include <iostream>
using namespace std;
template <typename F> void func2(F f) {
f("func2");
}
void func(function<void(const char *)> f) {
f("func");
}
int main() {
auto l = [](const char *s) {
cout << s << "\n";
};
for (int i = 0; i < 2; i++) {
l("main"); // Calling lambda multiple times
func(l); // Passing lambda to a function using function<>
func2(l); // Passing lambda to a function using template
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Output: main func func2 main func func2
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |