c++ lamda表达式的注意事项
2016-01-10 17:14
441 查看
延迟调用
lamda表达式使用值进行捕获时,捕获的是变量当时的值,是复制语义。如果该值在lamda表达式生成之后发生变化,lamda表达式中存储的值并不会发生变化。int val = 25; auto f = [val] {cout << "val=" << val << endl; }; val = 0; f();//输出 val=25 cout <<"val="<<val << endl; //输出 val=0
如果希望lamda表达式能够获取捕获变量的即时变化,请使用引用方式进行捕获。
int val = 25; auto ff = [&val] {cout << "val=" << val << endl; }; val = 0; ff();//输出 val=0 cout << "val=" << val << endl; //输出 val=0
相关文章推荐
- C语言scanf输入格式 printf输出格式
- C++学习笔记(二)
- 【c++】静态数据成员定义及应用浅谈<重点>
- C语言指针详解(一)
- c/c++多维数组的动态内存开辟与释放
- C语言学习之回调函数
- c语言中gets ,getschar 和fgets 的用法及三者之间的差别,还有scanf
- C++中重载、重写(覆盖)和隐藏的区别实例分析
- IOS之c语言笔记 day01
- C/C++ 中头文件相互包含引发的问题
- C++ 编译多态 运行多态
- C++ 课本学习笔记(2)
- c++优先级
- 03day 进入32位模式并导入C语言
- 汉诺塔的与解析
- 【c语言】 单链表
- C语言,从升序方幂数列中求得具体项数的值的解法
- 【c语言】 单链表
- C语言中.h和.c文件解析(很精彩)
- C++ stl vector不同遍历方式性能比较