C++中Lambda函数(匿名函数)

本文介绍了C++11引入的Lambda函数,这是一种匿名函数,常用于临时性的简单操作,有助于简化代码。Lambda表达式包括捕获列表、参数列表、返回类型(可选)和函数体。闭包是Lambda函数可以引用的外部变量集合,支持按值或按引用捕获。示例展示了不同类型的Lambda函数用法,包括无参数、无返回值以及捕获外部变量的情况。
摘要由CSDN通过智能技术生成
  • 匿名函数就是没有名字的函数。有一些函数只是临时用一下,而且业务逻辑也比较的简单,相当于是临时工,就没必要给它定义成一个正常函数(包含有函数名,很正式的那种)。使用临时的匿名函数,可以减轻函数的数量,让代码变的清晰易读。
    C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式). Lambda表达式具体形式如下:
[capture](parameters)->return-type{body}

[ ]是指闭包,闭包是指在Lambda函数之外声明的变量,Lambda函数可以引用这些变量,这些变量的集合叫做闭包。在[ ]里面可以定义变量是按值或这引用来捕获。捕获的含义就是:按照什么类型来获取的变量。即使没有引用外部变量,也不能省略。

( )是指Lambda函数中用到的参数,这些参数是Lambda函数自己定义的局部变量。没有自定义的参数,可以省略。

return-type:是值Lambda函数运行完后,返回值的类型。如果没有返回值,可省略不写。

{body}:Lambda函数操作主体。

[](int x, int y) { return x + y; } // 隐式返回类型
[](int& x) { ++x; }   // 没有return语句 -> lambda 函数的返回类型是'void'
[]() { ++global_x; }  // 没有参数,仅访问某个全局变量
[]{ ++global_x; }     // 与上一个相同,省略了()

[](int x, int y) -> int { int z = x + y; return z; }

 Lambda函数可以引用在它之外声明的变量. 这些变量的集合叫做一个闭包. 闭包被定义在Lambda表达式声明中的方括号[]内. 这个机制允许这些变量被按值或按引用捕获.下面这些例子就是:

[]        //未定义变量.试图在Lambda内使用任何外部变量都是错误的.
[x, &y]   //x 按值捕获, y 按引用捕获.
[&]       //用到的任何外部变量都隐式按引用捕获
[=]       //用到的任何外部变量都隐式按值捕获
[&, x]    //x显式地按值捕获. 其它变量按引用捕获
[=, &z]   //z按引用捕获. 其它变量按值捕获
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值