您的位置:首页 > 编程语言 > C语言/C++

C++11新特性-lambda函数

2017-07-01 11:25 253 查看
在数理逻辑或计算机科学领域中,lambda则是被用来表示一种匿名函数,这种匿名函数代表了一种所谓的λ演算。

而从软件开发的角度看,以lambda概念为基础的函数式编程是与命令式编程、面向对象编程等并列的一种编程范型。

lambda函数语法

lambda函数语法定义:

[capute] (parameters) mutable->return type{statement}

[capute]:捕捉列表。捕捉列表总是出现在lambda函数的开始处。事实上,[]是lambda引出符。编译器根据该引出符判断接下来的代码是否是lambda函数。捕捉列表能够捕捉上下文中的变量以供lambda函数使用。

parameters:参数列表。与普通函数的参数列表一致。如果不需要参数传递,则可以连同括号()一起省略。

mutable:mutable修饰符。默认情况下lambda函数总是一个const函数。mutable可以取消其常量性。在使用该修饰符时,参数列表不可省略(即使参数为空)。

return type:返回类型。用追踪返回类型形式声明函数的返回类型。

statement:函数体。内容与普通函数一样,不过除了可使用参数之外,还可以使用所有捕获的变量。

最简单的lambda函数

[]{}

Ex:[](int x,int y)->int{return x+y;};

与普通函数不同点

lambda函数于普通相比:

不需要定义函数名,取而代之的是一对方括号([])

采用追踪返回类型的方式声明其返回值

应用

C/C++不允许局部函数(函数作用域中定义的函数),lambda可以发挥类似的作用

如果需要定义的常量的值由自己初始化状态决定,可以使用lambda

实现

见此篇博客,仿函数是编译器实现lambda表达式的一种方式。仿函数是重载了成员函数operator的一种自定义函数对象。

http://blog.csdn.net/zhangxiangdavaid/article/details/44064765
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: