C++11中的匿名函数(lambda函数,lambda表达式)
来源:互联网 发布:ci 数据库配置 编辑:程序博客网 时间:2024/06/05 14:46
C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式). Lambda表达式具体形式如下:
[capture](parameters)->return-type{body}
如果没有参数,空的圆括号()可以省略.返回值也可以省略,如果函数体只由一条return语句组成或返回类型为void的话.形如:
[capture](parameters)->return-type{body}
如果没有参数,空的圆括号()可以省略.返回值也可以省略,如果函数体只由一条return语句组成或返回类型为void的话.形如:
[capture](parameters){body}
Lambda函数可以引用在它之外声明的变量. 这些变量的集合叫做一个闭包. 闭包被定义在Lambda表达式声明中的方括号[]内. 这个机制允许这些变量被按值或按引用捕获.
规则如下:
[] //未定义变量.试图在Lambda内使用任何外部变量都是错误的.
[x, &y] //x 按值捕获, y 按引用捕获.
[&] //用到的任何外部变量都隐式按引用捕获
[=] //用到的任何外部变量都隐式按值捕获
[&, x] //x显式地按值捕获. 其它变量按引用捕获
[=, &z] //z按引用捕获. 其它变量按值捕获
下面举个例子
1.函数指针方式
//定义一个函数指针
void(*p)();
p = [](){
std::cout << "The function is the Niming function!" << std::endl;
};
//通过指针来调用函数
p();
2.auto方式
auto p = [](){
std::cout << "The function is the Niming function!" << std::endl;
};
//通过指针来调用函数
p();
详细使用例子见:http://blog.csdn.net/qiuchunhuige/article/details/77523083
阅读全文
0 0
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数指针(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- 匿名函数 & Lambda 表达式
- 二叉树面试题以及线索化二叉树
- Unity3D发布WebGL(网页)到IIS服务器并加入ASP.NET页面中
- 基于spark的网络爬虫实现
- AngularJS实战之filter的使用二
- c++ 中缀表达式转后缀表达式 计算器
- C++11中的匿名函数(lambda函数,lambda表达式)
- HDU 6180 Schedule
- crypto++ User Guide: filters.h学习笔记
- Spring Boot 定时任务之Quartz
- linux 字符设备入门学习笔记
- 【redis】RDB 持久化
- 【USACO3.3.5】游戏(区间dp的滚动数组与编码问题)
- Sparkler:Spark上的爬虫
- 【Linux学习笔记】10:帮助命令man