1.Lambda表达式的基本语法
Lambda表达式是一个匿名函数,为了简化编程工作。
Lambda表达式语法:[ ] ()->{}
- [ ]中填写捕获方式,当表达式需要调用外部变量时,需要填写捕获外部变量的方式如 " =“、”&"等。
- ( )中填写函数传入的参数
- ->后填写函数返回值
- { }中填写函数体
note:当以“=”作为捕获方式传入外部参数时,在函数体中无法修改该外部变量的值,需要加上mutable修饰符。
int main() { int a = 10; auto lambda = [=](int value)mutable->int {a = 5; return a + value; }; int b = lambda(10); cout << b << endl; return 0; }
2.Lambda与仿函数
仿函数是实现lambda表达式的一种方式,在C++11中lambda可以视为仿函数的一种等价形式
3.lambda表达式类型
lambda表达式是一种闭包类型,每一个lambda表达式会产生一个临时对象(右值),严格来说lambda表达式并非函数指针,lambda表达式可以转为函数指针,但是函数指针无法转为lambda表达式。