标签:基础 ref operator 时间 _each 使用 其它 列表 作用域
[capture] (params) opt -> ret {body;}
auto f = [](int a) ->int {return a+1;};
std::cout<<f(1)<<std::endl;//输出2
auto f1 = [](){return 1;};
等价于auto f2 = []{return 1;};
[]
不捕获任何变量[&]
捕获外部作用域中所有变量,并作为引用在函数体中使用(按引用捕获)[=]
捕获外部作用域中所有变量,并作为副本在函数体中使用(按值捕获)[=,&foo]
按值捕获外部作用域中所有变量,并按引用捕获foo变量。[bar]
按值捕获bar变量,同时不捕获其他变量[this]
捕获当前类中的this指针,让lambda表达式拥有和当前类成员函数同样的访问权限。如果已经作用了&
或者=
,就默认添加此选项。捕获this的目的是可以在lambda中使用当前类的成员函数和成员变量。class CountEven
{
int& count_;
public:
CountEven(int& count):count_(count)
{
}
void operator()(int val)
{
if(!(val & 1)) //val % 2 == 0
{
++ count_;
}
}
};
std::vector<int> v = {1,2,3,4,5,6};
int even_count = 0;
for_each(v.begin(), v.end(), CountEven(even_count));
std::cout << "The number of even is "<<even_count<<std::endl;
std::vector<int> v = {1,2,3,4,5,6};
int even_count = 0;
for_each(v.begin(), v.end(),[&even_count](int val)
{
if(!(val & 1)) //val %2 == 0
{
++ even_count;
}
});
标签:基础 ref operator 时间 _each 使用 其它 列表 作用域
原文地址:https://www.cnblogs.com/fewolflion/p/12777448.html