c++ lamda

作者: xinguoshui | 来源:发表于2020-05-24 16:32 被阅读0次

[captures] (params) mutable-> type{...} //lambda 表达式的完整形式

在 lambda 表达式引出操作符[ ]里的“captures”称为“捕获列表”,可以捕获表达式外部作用域的变量,在函数体内部直接使用,这是与普通函数或函数对象最大的不同(C++里的包闭必须显示指定捕获,而lua语言里的则是默认直接捕获所有外部变量。)

捕获列表里可以有多个捕获选项,以逗号分隔,使用了略微“新奇”的语法,规则如下

[ ]        :无捕获,函数体内不能访问任何外部变量

[ =]      :以值(拷贝)的方式捕获所有外部变量,函数体内可以访问,但是不能修改。

[ &]      :以引用的方式捕获所有外部变量,函数体内可以访问并修改(需要当心无效的引用);

[ var]  :以值(拷贝)的方式捕获某个外部变量,函数体可以访问但不能修改。

[ &var] :以引用的方式获取某个外部变量,函数体可以访问并修改

[ this]  :捕获this指针,可以访问类的成员变量和函数,

[ =,&var] :引用捕获变量var,其他外部变量使用值捕获。

[ &,var]:只捕获变量var,其他外部变量使用引用捕获。

相关文章

  • c++ lamda

    [captures] (params) mutable-> type{...} //lambda 表达式的完整形式...

  • C++ 新特性

    lamda C/C++:lambda_无聊科技-CSDN博客[https://blog.csdn.net/qq_2...

  • java8 lambda-2-各类语言中的lambda

    C/C++:函数指针 C#:委托 java之前:接口参数,实际传入匿名对象(匿名内部类) lamda表达式是Jav...

  • Java8 One---- Lamda表达式

    1 Lamda表达式 lamda表达式构成, 参数,箭头,方法体.为什么使用lamda表达式, 最只直观的就是简洁...

  • 函数指针

    lamda传入函数指针 如果带捕获参数则不能传入。 lamda [&] 和 [=] reuslt: 113 所以一...

  • Java8(二)之走进Stream

    本篇文章是基于上一篇Lamda表达式的基础上的内容,因为其中涉及了较多的Lamda语法。如果对于Lamda表达式没...

  • JDK1.8之Lamda表达式(匿名内部类优化)

    1.Lamda表达式的作用 例如一个匿名内部类的使用,使用Lamda表达式可以简化。 图一Lamda表达式和图二的...

  • matlab解特征值偏微分方程

    -Lu=lamda*u,这个解有无数个,u=a*sin(pi*m*x)*sin(pi*ny),lamda=pi^2...

  • 关于lamda、inline和reified

    一、关于 lamda 1.1、kotlin中的一个lamda声明,对应Java的一个FunctionN的接口 顶级...

  • cpp insight2

    lamda值传递 lamda引用传递 throw传递值时的搬运 默认构造/默认拷贝构造/默认移动构造 一旦自定义了...

网友评论

      本文标题:c++ lamda

      本文链接:https://www.haomeiwen.com/subject/rjjjahtx.html