C++ lambda
来源:互联网 发布:知乎电脑客户端 编辑:程序博客网 时间:2024/06/02 10:06
C++11 的 lambda 表达式规范如下:
[capture](parameters) mutable exception attribute ->retury-type {statement}
其中,
mutable 修饰符说明 lambda 表达式体内的代码可以修改被捕获的变量,并且可以访问被捕获对象的 non-const 方法。
exception 说明 lambda 表达式是否抛出异常(noexception),以及抛出何种异常,类似于void f() throw(X, Y)。
attribute 用来声明属性。
capture 捕捉列表, 能够访问一些上下文中的数据以供Lambda函数使用, 可以有以下集中形式:
[] // 不捕获任何外部变量
[a] // 以值的形式捕捉外部变量a
[=] // 以值的形式捕获所有外部变量
[&] // 以引用形式捕获所有外部变量
[x, &y] // x 以传值形式捕获,y 以引用形式捕获
[=, &z] // z 以引用形式捕获,其余变量以传值形式捕获
[&, x] // x 以值的形式捕获,其余变量以引用形式捕获
[this] 捕获当前类中的this指针,如果已经使用了&或者=就默认添加此选项
#include <iostream>int main() { int n = 100; auto f = [n](int k) { return n + k ; }; std::cout << f(3) << endl; auto b = 3; auto b2 = [n, &b] (int c) -> int{ // n只读, b读写 b = c*2; return n + c; }(1000); std::cout << n << std::endl; std::cout << b << std::endl; std::cout << b2 << std::endl;//int sum = 10;//cout << [&](int n) { return sum += n * n;}(10);//cout << "\n";//cout << sum;////cout << "\n";//int t = 1;//cout << [=](int n) mutable { return t += n * n;}(10);//cout << "\n";//cout << t;////cout << "\n";//int a = 3, b = 4;//cout << [=, &b](int n) { return b += n * n + a;}(10);//cout << "\n";//cout << b;}
0 0
- [c#]: Lambda
- C#-Lambda
- c#Lambda
- c#lambda
- 【c/c++】Lambda表达式
- C#--Lambda表达式
- C++ox 之 lambda
- C#:Lambda 表达式
- C++lambda表达式
- C++lambda表达式
- C++lambda详解~读书笔记
- C# Lambda表达式
- C++:lambda表达式
- C++lambda详解~读书笔记
- C#Lambda表达式
- C++Lambda学习
- 【c++】lambda表达式
- C++lambda表达式简记
- 从1.0到2.0,我们还要走多久?
- c++之STL(13) STL 算法 - 查找算法(5)adjacent_find(b,e) adjacent_find(b,e,p)
- Dijkstra模板
- 夏令营day5总结
- floyd算法模板
- C++ lambda
- Ubuntu系统播放*.avi格式出错
- sqlmap工具使用小结
- 设计模式GOF23——迭代器模式
- Java基础学习——注解(Annotations)学习
- 洛谷P1631 序列合并
- foreach动态删除控件漏删/遍历不全
- Pro_3_UNIX下read_write输入输出的字节数不足的问题
- Python数据结构(二)序列类型list,tuple