c++编译---c++11 Lambda

一 出处:

本篇文章转自:

https://blog.csdn.net/lixiaogang_theanswer/article/details/80905445
https://blog.csdn.net/lcalqf/article/details/79401210

二 lambda 函数概述

lambda 表达式是一种匿名函数,即没有函数名的函数;该匿名函数是由数学中的λ演算而来的。

三 lambda 表达式

[capture list] (params list) mutable exception-> return type { function body }
含义如下:
capture list:捕获外部变量列表
捕捉列表总是作为lambda的开始,即出现于lambda的开始处。它是lambda的引出符(即开始标志)。编译器可以根据该“标志”来作出判断出该函数是否为lambda函数。同时“捕捉列表”能够捕捉

params list:形参列表
和C/C++中的普通函数参数意义一样。该部分是可选的,意味着如果我们不需要进行参数传递时,可以连同括号“()”一起省略掉。

mutable指示符:用来说用是否可以修改捕获的变量
在默认的情况下,lambda函数总是返回一个const喊,而当我们在参数列表后面注明了“mutable”关键字之后,则可以取消其常量性质。若在lambda中使用了mutable修饰符,则“参数列表”是不可省略掉的

return-type:函数的返回值类型。
和C/C++中的普通函数返回值类型的性质一样。主要目的是用来追踪lambda函数(有返回值情况下)的返回类型。若lambda函数不需要返回值,则可以直接将这部分省略掉。

{statement}:函数体。
在该函数体中,除了可以使用参数列表中的变量外,还可以使用所有捕获到的变量(即[capture] 中的变量)。

四 参数详解

1 capture list 详解
(1) [var] 表示值传递的方式捕获变量
(2) [=] 表示值传递方式捕捉所有父作用域的变量
(3) [&var] 表示引用传递捕捉变量var
(4) [&] 表示引用传递捕捉所有父作用域的变量(包括this)
(5) [this] 表示值传递方式捕捉当前的this指针

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值