0


【C++】细节满满地lambda表达式讲解!

lambda

格式

lambda表达式书写格式:[capture-list] (parameters) mutable -> return-type { statement }
[捕捉列表] (参数列表) 取消常量性 -> 返回值类型{函数体}
lambda项目细节说明捕捉列表作为lambda表达式的起始标志,可以捕捉上下文中的变量供lambda函数使用参数列表与普通函数的参数列表一致,如果不需要参数传递,则可以连同()一起省略mutable默认情况下,lambda函数总是一个const函数,mutable可以取消其常量性。使该修饰符时,参数列表不可省略(即使参数为空)。-> 返回值类型返回值类型。用追踪返回类型形式声明函数的返回值类型,没有返回值时此部分可省略。返回值类型明确情况下,也可省略,由编译器对返回类型进行导。{函数体}函数体。在该函数体内,除了可以使用其参数外,还可以使用所有捕获到的变量

捕捉列表说明:

捕捉列表说明[var]表示值传递方式捕捉变量var[=]表示值传递方式捕获所有父作用域中的变量(包括this)[&var]表示引用传递捕捉变量var[&]表示引用传递捕捉所有父作用域中的变量(包括this)[this]表示值传递方式捕捉当前的this指针

注意捕捉列表可以连续取内容,但不允许连续捕捉(在捕捉全部值的基础上,再次捕捉值,相反。引用就可以)
父作用域就是包含lambda表达式的呢一块代码{};

细节及使用

在块作用域以外的lambda函数捕捉列表必须为空(全局)
在这里插入图片描述
值传递不改变内容:
在这里插入图片描述

这两个例子来源网络,做一下理解:
在这里插入图片描述
在这里插入图片描述

作为仿函数

lambda表达式在作为自定义类型的仿函数时,相当于

重载了()的类

和真正的仿函数底层是一个原理.–>就是实例化一个仿函数对象,调用括号运算符重载.

标签: c++ lambda

本文转载自: https://blog.csdn.net/zhaocx111222333/article/details/117565547
版权归原作者 zhao111222333444 所有, 如有侵权,请联系我们删除。

“【C++】细节满满地lambda表达式讲解!”的评论:

还没有评论