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 ;
}

C++ 11 中的 Lambda 表达式的使用的更多相关文章

  1. C++11中的Lambda表达式

    原文地址:C++中的Lambda表达式 作者:果冻想 一直都在提醒自己,我是搞C++的:但是当C++11出来这么长时间了,我却没有跟着队伍走,发现很对不起自己的身份,也还好,发现自己也有段时间没有写C ...

  2. 【转】C++11新特性——lambda表达式

    C++11的一大亮点就是引入了Lambda表达式.利用Lambda表达式,可以方便的定义和创建匿名函数.对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多 ...

  3. C#中的Lambda表达式和表达式树

    在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...

  4. Qt5中使用lambda表达式

    c11新特性中加入了lambda表达式,所以Qt 也支持 需在.pro文件中加入 CONFIG += c++11 例子: QString program = "C:/Windows/Syst ...

  5. Java语言与JVM中的Lambda表达式全解

    Lambda表达式是自Java SE 5引入泛型以来最重大的Java语言新特性,本文是2012年度最后一期Java Magazine中的一篇文章,它介绍了Lamdba的设计初衷,应用场景与基本语法. ...

  6. Qt5中的lambda表达式和使用lambda来写connect

    c11新特性中加入了lambda表达式,所以Qt 也支持 需在.pro文件中加入 CONFIG += c++11 例子: QString program = "C:/Windows/Syst ...

  7. Android中使用Lambda表达式开发

    参考文章:ImportNew 要在Android开发中使用lambda表达式,首先需要在 Module 的build.gradle中加入: compileOptions { targetCompati ...

  8. 探索Java语言与JVM中的Lambda表达式

    Lambda表达式是自Java SE 5引入泛型以来最重大的Java语言新特性,本文是2012年度最后一期Java Magazine中的一篇文章,它介绍了Lamdba的设计初衷,应用场景与基本语法.( ...

  9. 你知道C#中的Lambda表达式的演化过程吗

    你知道C#中的Lambda表达式的演化过程吗? 阅读目录 委托的使用 匿名方法 Func和Action Lambda的诞生 那得从很久很久以前说起了,记得那个时候... 懵懂的记得从前有个叫委托的东西 ...

随机推荐

  1. MySQL的结构图

    MySQL的结构图 为了更好的了解和配置MySQL,就必须先了解一下MySQL的体系结构.如下图所示: ▲MySQL体系架构图 理解MySQL的体系架构对于成功的配置和调试至关重要.以下将对架构图进行 ...

  2. VS2008项目使用VS2015打开时,出现错误: error CS1012: Too many characters in character literal

    VS2008项目使用VS2015打开时,出现错误: error CS1012: Too many characters in character literal ------------------- ...

  3. android 更新listview 其中一行的数据显示

    private void updateView(int index){ View v = yourListView.getChildAt(index - yourListView.getFirstVi ...

  4. maven学习(2)-在Eclipse 中使用Maven

    第一节:m2eclipse 插件安装 打开Eclipse,点击菜单Help - > Install New Software 点击Add 按钮Name:m2e location: http:// ...

  5. js关于a++ 与++a

    var a=6; var b=a++; 此时a的值是7;a++的值是7;b的值是6; var c=8; var d=--c; 此时c的值是7;--c的值是6;d的值是7;

  6. 术语-服务:IaaS

    ylbtech-术语-服务:IaaS IaaS(Infrastructure as a Service),即基础设施即服务.消费者通过Internet 可以从完善的计算机基础设施获得服务.这类服务称为 ...

  7. java接口定义和作用

    接口语法 1.接口是一种引用类型,可以等同看作类.修饰符 interface 接口名 2.接口中只能出现常量和抽象方法 3.接口其实是一个特殊的抽象类,特殊在接口是完全抽象的 4.接口中没有构造方法, ...

  8. 使用alter database datafile 'XXX' offline drop 是否能够恢复(非归档模式下)

    今天在群里面听到一位网友在说使用了alter database datafile 'XXX' offline drop命令是否能够恢复数据,在非归档模式下,下面是用一个实验来验证一下 ######## ...

  9. 管理oracle的一些知识

    管理一个oralce软件: 如何管理数据库,须知道什么知识. 1.安装:位置,字符集 2.建库:什么数据库名称 3.数据库启动: nomout:读参数文件,一些初始化设置信息 mount:读取控制文件 ...

  10. MySQL数据库InnoDB存储引擎

    MySQL数据库InnoDB存储引擎Log漫游  http://blog.163.com/zihuan_xuan/blog/static/1287942432012366293667/