C++:lambda表达式
来源:互联网 发布:阿里云服务器客服 编辑:程序博客网 时间:2024/05/17 03:50
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 <iostream>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<<endl; }
阅读全文
0 0
- 【c/c++】Lambda表达式
- C#--Lambda表达式
- C#:Lambda 表达式
- C++lambda表达式
- C++lambda表达式
- C# Lambda表达式
- C++:lambda表达式
- C#Lambda表达式
- 【c++】lambda表达式
- C++lambda表达式简记
- c#lambda表达式复习
- [C++]Lambda表达式简介
- 【C#】理解Lambda表达式
- 【C++】Lambda表达式
- C++lambda表达式
- C++Lambda表达式用法
- C++:lambda表达式
- 【C#】Lambda表达式
- opencv:访问像素
- opencv:通过滑动条调节亮度和对比度
- opencv:傅里叶变换
- opencv:图像的掩码操作
- opencv:直方图操作
- C++:lambda表达式
- 省略号和可变参数模板
- plupload上传插件多图片上传操作
- static-静态类型
- 内存的划分和分配等[转载]
- 机器学习(三)——决策树(decision tree)算法介绍
- pt-query-digest用法
- Caffe初试
- 两个简单的几何问题