c++11 Lambda表达式

c++11引入了Lambda表达式,用于定义并创建匿名的函数对象,以简化编程工作。 最简单的Lambda表达式如这样: 也可以在定义的时候直接调用: 或者把它传递给一个变量,再调用,可以多次调用: 完整的lambda表示格式如下: 中括号里是指明要捕获的外部作用域的变量。 小括号是传递给lambda表达式的参数。 mutable修饰符,可以修改按值传递进来的拷贝(注意是能修改拷贝,而不是值本身)。 exception声明用于指定函数抛出的异常,如抛出整数类型的异常,可以使用throw(int)。 ->返回值类型,标识函数返回值的类型,当返回值为void,或者函数体中只有一处return的地方(此时编译器可以自动推断出返回值类型)时,这部分可以省略。 大括号就是函数体了。 捕获参数 lambda表达式中括号是用来捕获外部作用域的变量的: [],不捕获任何外部作用域变量。 ,按值传递的方式捕获所有外部作用域的变量。 ,按引用传递的方式捕获所有外部作用域的变量。 ,个别的指明值的捕获方式。 ,y按引用传递,其他按值传递。 ,y按值传递,其他按引用传递。 mutable修饰符可以对值传递的变量进行修改,并保存状态: lambda的类型,是个匿名的函数对象。每个lambda表达式的类型都是独一无二的。但可用std::function<>模版接受一个一般化的lambda:   ... Read More | Share it now!