可能重复:
C++ 11中的lambda表达式是什么?
我在C++中找到了这个表达式(C++ 11最激动人心的特性之一):
int i = ([](int j) { return 5 + j; })(6);
Run Code Online (Sandbox Code Playgroud)
为什么我得到11?请解释这个表达方式.
cdh*_*wie 12
[](int j) { return 5 + j; }是一个lambda,它接受int一个参数并调用它j.它为此参数添加了5并返回它.在(6)表达后,立即调用拉姆达,所以你加入6和5在一起.
它大致相当于这段代码:
int fn(int j) {
return 5 + j;
}
int i = fn(6);
Run Code Online (Sandbox Code Playgroud)
当然,除了它不创建命名函数.一个智能编译器可能会内联lambda并进行常量折叠,从而简单地减少int i = 11;.
| 归档时间: |
|
| 查看次数: |
621 次 |
| 最近记录: |