lambdas的语法
无参数的lambsad表达式
auto l = []{
std::cout << "hello " << std::endl;
};
l();
以上就完成了无参数的lambdas的使用
有参数的lambdas的使用
两种语法:
[...] {...}
或者
[...] (...)
#include<iostream>
#include<string>
带有参数的lambdas函数
int _tmain(int argc, _TCHAR* argv[])
{
auto l = [](const std::string &s){
std::cout << s << std::endl;
};
l("aaaaa");
getchar();
return 0;
}
带有返回值的lambdas函数
#include<iostream>
#include<string>
int _tmain(int argc, _TCHAR* argv[])
{
auto l = [](const std::string &s)->std::string{
return s;
};
std::cout<<l("aaaaa")<<std::endl;
getchar();
return 0;
}
访问外部范围的lambdas
int _tmain(int argc, _TCHAR* argv[])
{
int x = 0;
int y = 42;
auto l = [x , &y](){
std::cout << "x : " << x << std::endl;
std::cout << "y : " << y << std::endl;
y++;
};
x = y = 77;
l();
l();
std::cout << "final y : " << y << std::endl;
getchar();
return 0;
}
输出结果为
x : 0
y : 77
x : 0
y : 78
final y : 79
使用lambdas作为函数的返回值
首先要使用到的函数头文件
#include<functional>
std::function<int(int, int)> retrunlambdas(){
return[](int x, int y){
return x*y;
};
}
auto lf = retrunlambdas();
std::cout <<"the final lf(int , int) = "<< lf(6, 7) << std::endl;
输出结果为:
the final lf(int , int) = 42