当向一个函数传递一个lambda时,同时定义了一个新类型和该类型的一个对象。
传递的参数就是此编译器生成的类类型的未命名对象。
1.为什么要使用lambda表达式?
有一些泛型算法,比如<algorithm>里面的sort(),对于一定对象的比较需要用一个谓词或者可调用对象重载比较操作。
这个时候可以使用lambda表达式作为参数。很方便。
lambda就是一个匿名函数,在一些需要却又不想要为其命名的时候使用,比如将其作为参数,传给接收可调用对象作为参数的函数模板。
2.使用格式
[capture list] (parameter list) -> return type {function body}
lambda函数是定义在函数中的,而要使用该函数里面定义的非static局部变量,就需要进行捕获,即在capture list里面声明。
3.关于捕获
[=]表示隐式值捕获
[&]表示隐式引用捕获