c++11引入lambdas表达式,它可以作为参数或者局部对象。
1.简单示例
下面是一个简单的示例:
#include <iostream>
int main()
{
[]{
std::cout <<"hello lambda" <<std::endl;
}();
return 0;
}
运行结果
hello lambda
实际上,我们很少在定义时直接调用,而是采用如下方式:
#include <iostream>
int main()
{
auto f = []{
std::cout <<"hello lambda" <<std::endl;
};
f();
return 0;
}
运行结果同上。
2.传值
变量id以传值的方式进入lambda表达式。关键字mutable表示id在lambda表达式中可变。
#include <iostream>
int main()
{
int id = 0;
auto f = [id]()mutable{
id = id+10;
std::cout <<"id = " << id <<std::endl;
};
f();
std::cout <<"id = " << id <<std::endl;
return 0;
}
运行结果
id = 10
id = 0
3.传引用
变量id以传引用的方式进入lambda表达式
#include <iostream>
int main()
{
int id = 0;
auto f = [&id](){
id = id+10;
std::cout <<"id = " << id <<std::endl;
};
f();
std::cout <<"id = " << id <<std::endl;
return 0;
}
运行结果
id = 10
id = 10