C++ 11 中支持了Lambda,然后C++14, C++20中又有所增加.
本着实用的目的,这里就简单的说下C++11中Lambda的基本用法.
语法
有以下几种形式:
[ captures ] ( params ) -> ret { body }
[ captures ] ( params ) { body }
[ captures ] { body }
其中captures
表示捕获的外部变量,params是形式参数,ret是返回值的类型,body是表达式.
简单的demo
auto lambda1 = [](int a, int b) -> int {
return a + b;
};
auto lambda2 = [] {
std::cout << "Hello World" << std::endl;
};
auto lambda3 = [](int a, int b) {
std::cout << a + b << std::endl;
};
int main(){
std::cout << lambda1(1,2) << std::endl;
lambda2();
lambda3(2,3);
int x = 32;
auto lambda4 = [x](int y) -> int {
return x + y;
};
std::cout << lambda4(12) << std::endl;
auto f = lambda2;
f();
return 0;
}