Lambda在C#中使用得非常频繁,并且可以使代码变得简洁,优雅.

在C++11 中也加入了 Lambda. 它是这个样子的 [] () {}...  是的三种括号开会的节奏~ [] 的作用是表示Lambda的开始.并且告诉编译器.在这个表达式中要用哪种方式去访问同一作用域中的其它变量

[=] : 表达以值传递的方式调用

[&] : 表示以引用的方式调用

[a,b,&c] : 表示a,b为值传, c为引用传递

[=,&a] : 表示除了a为引用传,其它都为值传

[&,a,b] : 表示为了a,b 为值传,其它都为引用传递

[this] : 表示将类的this 指针传入了, 这样你就可以使用类的属性及方法在 Lambda中.

() : 就是函数的参数列表

{} : 函数的主体

如果你的函数主体只有一句话的时候,Lambda会自动推断返回的类型,如果函数主的内容多的话,并且需要有返回值的情况的时候,你就需要手动的指定Lambda返回的类型:

[]()->int {} : 这是手动指定返回 int 类型.

如果你想写一个函数,并且用一个Lambda表达式作为参数的话,你需要 #include <functional> 头文件,这里包括了模板函数的定义 相当于C# 中的 Action,Func 等~ 它的使用是这样的:

std::function<int(int,int)> func :  这个是定义了一个 传入两个 Int 参数,并返回Int类型的函数

std::function<void()> func : 表达的函数是没有传入参数,并且也没有返回值的类型的函数

 #include <iostream>
#include <functional> // 相当于 C# Action , Func
using namespace std; void MyFunc(int val,function<int(int)> func) {
cout << func(val) << endl;
} int main() {
MyFunc(,[](int x) {return x * x * x;});
return ;
}

最新文章

  1. CSS基础知识汇总
  2. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 数据权限增强、范围权限增强
  3. GPS部标平台的架构设计(五)-地图服务算法库
  4. Java Bean
  5. [实变函数]5.2 非负简单函数的 Lebesgue 积分
  6. C/C++中产生随机数
  7. 【Flatten Binary Tree to Linked List】cpp
  8. Linux下的Shell编程
  9. C++: std::string 与 Unicode 如何结合?
  10. Java之字节输入流和输出流
  11. jQuery UI 之 EasyUI 快速入门
  12. NTP工作机制及时间同步的方法
  13. 联想G480安装CentOS电缆驱动器
  14. 30岁程序员的选择,一线OR二线?
  15. ELK系列~nxlog实现多位置文件的收集
  16. Android 获取验证码倒计时实现
  17. div嵌套,常见左右分类栏目
  18. day 49-css补充(终结)[浮动和定位]
  19. canvas 实现飞碟射击游戏
  20. OneZero第三次站立会议(2016.3.23)

热门文章

  1. UOJ 393 【NOI2018】归程——可持久化并查集
  2. push is not a function
  3. TraceView 使用详解 android eclipse
  4. Redis在Windows集群中的错误
  5. fiddler工具能干啥
  6. tomcat 加载顺序 web.xml文件详解
  7. python selenium-2 定位元素
  8. CentOS7 安装supervisor守护进程管理器
  9. oracle 所有 hint(转)
  10. hint之qb_name