当前位置: 首页 > news >正文

C++的Lambda表达式的用法

语法结构

  • [ 捕获列表 ](参数列表)->返回值{ 函数体 }
  • [ capture list ] (parameters) -> return-type { method definition}

组成元素说明

捕获列表

[ ]是lambda的引出符,捕捉列表能够捕捉父作用域的变量,来给lambda函数使用,可以取以下几种形式:

  • [var] 表示以值传递方式捕捉变量var
  • [=] 表示值传递捕捉所有父作用域变量
  • [&var] 表示以引用传递方式捕捉变量var
  • [&] 表示引用传递捕捉所有父作用域变量
  • [this] 表示值传递方式捕捉当前的this指针

也可以组合使用,例如[=,&a] 表示以引用传递方式捕捉a,值传递方式捕捉其他变量。
注意:捕捉列表不允许变量重复传递,如:[=,a]、[&,&this],编译时就会报错。

参数列表

使用方式和普通函数的方法相同,如果不需要参数可以连同“()”一起省略。

返回值

“->返回类型”如果没有返回值,可以连同“->”一起省略,如果返回类型很明确,也可以省略,让编译器自动推倒类型。

函数体

“{函数体}”和普通函数相同,除了可以使用参数之外,还可以使用捕获的变量。

mutable

“mutable”放在参数列表之后,Lambda表达式默认是const属性,使用怒mutable可以取消Lambda的常量属性, 不过multable仅仅是让Lamdba函数体修改值传递的变量,但是修改后并不会影响外部的变量。

相关文章:

  • 微信小程序学习之rich-text的嵌入静态HTML
  • 微信小程序CSS Flexbox(弹性盒子)布局模块
  • 语义化版本 2.0.0 -- 如何使用软件版本号
  • 微信小程序css之盒子(box)模型
  • 微信小程序中text标签换行问题
  • 微信小程序无法找到组件的问题 [“usingComponents“][“component1“]:“xxx“未找到
  • git本地仓库新建分支并推送到远端仓库
  • 微信小程序将组件中的文字放置在正中间的方法
  • linux脚本开头的#!/bin/bash有什么作用
  • git如何撤销未提交的更改
  • Qt动态更改界面语言(在运行状态下改变界面语言)
  • .gitignore文件---让git自动忽略指定文件
  • 解决QMYSQL driver not loaded问题
  • 信息安全之对称加密技术
  • 信息安全之非对称加密技术
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 10个最佳ES6特性 ES7与ES8的特性
  • 2019.2.20 c++ 知识梳理
  • CSS相对定位
  • go append函数以及写入
  • javascript 哈希表
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • javascript面向对象之创建对象
  • js对象的深浅拷贝
  • laravel 用artisan创建自己的模板
  • Mocha测试初探
  • PHP CLI应用的调试原理
  • vuex 笔记整理
  • Web标准制定过程
  • Zepto.js源码学习之二
  • 阿里云购买磁盘后挂载
  • 程序员最讨厌的9句话,你可有补充?
  • 回流、重绘及其优化
  • 坑!为什么View.startAnimation不起作用?
  • 利用jquery编写加法运算验证码
  • 如何编写一个可升级的智能合约
  • 树莓派 - 使用须知
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 带你开发类似Pokemon Go的AR游戏
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #### go map 底层结构 ####
  • #pragam once 和 #ifndef 预编译头
  • $().each和$.each的区别
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (4)Elastix图像配准:3D图像
  • (编译到47%失败)to be deleted
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (图)IntelliTrace Tools 跟踪云端程序
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。