lambda函数
来源:互联网 发布:java导入项目 编辑:程序博客网 时间:2024/05/17 16:53
格式:[capture] (parameters) mutable ->return-type {statement}
[capture]:捕捉列表
(parameters) : 参数列表,不传参数可以连括号一起省略
mutable :修饰符,默认情况下lambda函数是一个const 函数,反正加上该修饰符时取消其常量行,此时必须加上参数列表
return-type :返回值类型:可以连->一起省略
{statement} 函数体
lambda函数是基于初始状态进行计算的,而函数是基于参数进行计算的;
捕捉列表的形式:
[=var]以值传递的方式捕捉var
[=]表示以值传递的方式捕捉父作用域的所有自动变量包括this
[&var]表示以引用的方式捕捉var变量
[&]表示以引用的方式捕捉父作用域的所有自动变量包括this
表示以值传递的方式捕捉当前指针this
注:在块作用域中只能捕捉父作用域的自动变量,而不能不做静态变量和非自动变量;
捕捉列表不可重复传递,即:= 和 & 不可以同时使用
测试代码:
auto func = [] () { std::cout << "hello world"<<endl; }; func(); int x =8,y =4;; auto fun = [](int x, int y)->int{return x+y;}; cout<<fun(x,y)<<endl; auto fun1 = [x,&y](){return x-y;}; x= 10;y =1; cout<<fun1()<<endl;
仿函数:
核心:重载了 () 运算符
class function1{private: int init;public: function1(int init):init(init){} int operator()() { return init*init; }};int main(){ function1 q(2); cout<<"x*x = "<<q()<<endl;}
0 0
- lambda函数
- lambda函数
- Lambda函数
- lambda函数
- lambda函数
- lambda函数
- Lambda函数
- lambda函数
- lambda函数
- lambda函数
- lambda函数
- lambda函数
- lambda函数
- lambda函数,匿名函数
- Python: 使用lambda函数
- 使用 lambda 函数
- lambda函数体转换
- Python的lambda函数
- 写给奋斗的自己
- 《java入门第一季》之面向对象(形式参数和返回值问题的深入研究3)
- Spine之四——用 Spine 架设骨骼,创建动画
- spine之五——在程序中使用动画
- Spine之六——纹理打包Texture packing
- lambda函数
- Spine之七——网格和蒙皮
- [剑指offer]二叉树的深度
- 第2课:通过案例对SparkStreaming 透彻理解三板斧之二:解密SparkStreaming
- listView滚动view置顶的简单做法
- 【VS开发】获得devcon.exe
- Java学习路线图
- 持续交付之三——持续集成
- Spine之八——网格和自由变形(FFD)