本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2024-11(2)

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

发布于2021-06-07 20:19     阅读(860)     评论(0)     点赞(30)     收藏(2)


格式

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表达式在作为自定义类型的仿函数时,相当于重载了()的类
和真正的仿函数底层是一个原理.–>就是实例化一个仿函数对象,调用括号运算符重载.

原文链接:https://blog.csdn.net/zhaocx111222333/article/details/117565547



所属网站分类: 技术文章 > 博客

作者:hhbnn

链接:http://www.phpheidong.com/blog/article/89451/21d420c9c5bb63e1dad4/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

30 0
收藏该文
已收藏

评论内容:(最多支持255个字符)