C++11中引入了lambda表达式。
语法格式:
这里假设我们定义了一个如上图的lambda表达式。现在来介绍途中标有编号的各个部分是什么意思。
- Lambda表达式的引入标志,在‘[]’里面可以填入‘=’或‘&’表示该lambda表达式“捕获”(lambda表达式在一定的scope可以访问的数据)的数据时以什么方式捕获的,‘&’表示一引用的方式;‘=’表明以值传递的方式捕获,除非专门指出。
- Lambda表达式的参数列表
- Mutable 标识
- 异常标识
- 返回值
- “函数”体,也就是lambda表达式需要进行的实际操作
几种简写的格式:
| 语法 | 序号 |
|---|---|
[ 捕获列表 ] ( 形参数列表 ) mutable(可选) 异常属性 -> 返回值类型 { 函数体 } | (1) |
[ capture-list ] ( params ) -> ret { body } | (2) |
[ capture-list ] ( params ) { body } | (3) |
[ capture-list ] { body } | (4) |
- (1)为完整的形式,包含变量捕获列表、形参列表、可变属性(可选)和返回值类型等。
- (2)省略了mutable,表示Lambda不能修改捕获的变量。
- (3)Lambda的返回值类型如果可以由函数体中的实际返回值推导出,可以省略。
- (4)如果没有形参,可以省略圆括号。
本文介绍了C++11中新增的Lambda表达式的语法和使用方法,包括捕获列表、参数列表、mutable标识、异常标识及返回值类型的定义。

1万+

被折叠的 条评论
为什么被折叠?



