博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++:lambda表达式
阅读量:4942 次
发布时间:2019-06-11

本文共 929 字,大约阅读时间需要 3 分钟。

1.基本概念

  lambda表达式是一种在被调用位置定义匿名函数对象的方法。lambda(λ)也就是指匿名函数。它在C++11中开始支持。在98/03标准中不支持,但是可以通过Boost库的Boost.Lambda来实现匿名函数。

  通常如果需要一个函数,但是又不想去命名一个函数,这时候可以使用lambda。

2.语法格式

  ①. capture,捕获,在规范中称为lambda引导,可以捕获周围的变量。可以指定是通过 值 或 引用 来

    进行捕获,通过加前缀 & 来进行引用捕获,不加前缀则通过值捕获。以下是捕获格式:

[]     //不捕获任何变量[=]    //通过值捕获周围所有变量[&]    //通过引用捕获周围所有变量[&,b]  //通过引用捕获周围所有变量,但变量b是通过值捕获,不包含在内[&a,b] //通过引用捕获a,通过值捕获b,其他的不捕获[=,&b] //通过值捕获周围所有变量,但变量b是通过引用捕获,不包含在内

 

  ②.参数列表,可选,也称作lambda声明符,限制:

   不能有缺省值、不能有可变长参数列表、不能有无名参数

   如果没有参数并且没有mutable、exception或attribute声明,则参数括号()可省略

  ③.修饰符,可选,加上mutable修饰符后,可以修改按值传递进来的拷贝(不是值本身)

  ④.异常规范,可选

  ⑤.返回值类型 ->,当返回值为void,或函数体内只有一处return时(由编译器推断返回值类型),可省略

  ⑥.函数体,可为空,不可省略

3.示例程序

#include 
using namespace std;int main(){ int m = 1; int n = 2; auto z = [&](int x, int y)->int{m = x + y; return 0; }; // 通过引用传递捕获所有该区域的变量 z(2, 3); cout << m<

 

  

  

转载于:https://www.cnblogs.com/whlook/p/6478502.html

你可能感兴趣的文章
VB程序逆向常用的函数
查看>>
转:Delphi中destroy, free, freeAndNil, release用法和区别
查看>>
Yii2框架之旅(六)
查看>>
springmvc.xml或spring.xml 能运行配置文件总是出现错误
查看>>
Team Foundation Server
查看>>
javascript之BOM对象总结
查看>>
mySQL 插入,更新和删除数据
查看>>
redis 和 memcached的区别
查看>>
sendEmail
查看>>
NYOJ 46 最少乘法次数
查看>>
linux locate
查看>>
NoSQL Redis的学习笔记
查看>>
[LeetCode] Interleaving String 交织相错的字符串
查看>>
[LeetCode] Two Sum IV - Input is a BST 两数之和之四 - 输入是二叉搜索树
查看>>
EBS MOAC深入研究(转)
查看>>
c#枚举位运算操作
查看>>
android 中解析json格式数据
查看>>
移动端报表JS开发演示样例
查看>>
QQ左侧滑动显示
查看>>
redis win连接以及配置连接密码
查看>>