C++11 中的匿名函数(lambda函数,lambda表达式)

       C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式)。Lambda表达式具体形式如下:

    [capture](parameters)->return-type{body}

  如果没有参数,空的圆括号()可以省略。返回值也可以省略,如果函数体只由一条return语句组成或返回类型为void的话.形如:

     [capture](parameters){body}

  下面举了几个Lambda函数的例子:   

[](int x, int y) { return x + y; } // 隐式返回类型
[](int& x) { ++x; }   // 没有return语句 -> lambda 函数的返回类型是'void'
[]() { ++global_x; }  // 没有参数,仅访问某个全局变量
[]{ ++global_x; }     // 与上一个相同,省略了()

  可以像下面这样显示指定返回类型:

[](int x, int y) -> int { int z = x + y; return z; }

  在这个例子中创建了一个临时变量z来存储中间值。和普通函数一样,这个中间值不会保存到下次调用。什么也不返回的Lambda函数可以省略返回类型,而不需要使用 -> void 形式。
  Lambda函数可以引用在它之外声明的变量。这些变量的集合叫做一个闭包,闭包被定义在Lambda表达式声明中的方括号[]内。

猜你喜欢

转载自blog.csdn.net/chenlycly/article/details/82627585