C++11介绍之Lambda表达式

基本表达式

Lambada表达式的完整实现模版如下:

[capture list] (params list) mutable exception-> return type { function body }

各个字段的定义如下:

  1. capture list:捕获的外部变量列表
  2. params list:形参列表
  3. mutable:表示是否可以修改捕获变量
  4. exception:异常设定
  5. return type:返回类型
  6. function body:函数体

常用的形式如下几种:

  1. [capture list] (params list) -> return type {function body}
  2. [capture list] (params list) {function body}
  3. [capture list] {function body}

优势

lambda带来的直接好处,在stl的算法中使用,避免起名字的纠结心理,其次,自然是少写了很多代码,而且代码更加紧凑。再一个,lambda既然能快速地封装代码块,自然就是制造各种奇技淫巧的很重要的原材料,结合宏以及其他的C++特有的功能,可以造出来很多有意思的特性,这是java、C#中没法玩出来的特效。

我们知道inline内联函数的优势是内联地展开,减少“保存寄存器、返回时恢复、拷贝实参、程序转向新位置”等函数的复杂操作,可以看作未命名的内联函数。

实例

下面给出一个实例:

#include 
using namespace std;

int main()
{
    cout<<  "*****f0******" <

执行结果如下:

*****f0******
2
*****f1******
124
******f2*****
124
******f3*****
123
124
123
*****f4******
123
124
124

你可能感兴趣的:(C++编程,c++)