C++11:07lambda表达式
2021-02-07 05:16
标签:基础 ref operator 时间 _each 使用 其它 列表 作用域 C++11:07lambda表达式 标签:基础 ref operator 时间 _each 使用 其它 列表 作用域 原文地址:https://www.cnblogs.com/fewolflion/p/12777448.htmllambda表达式
0、课前秀
1、lambda表达式的概念和基本用法
[capture] (params) opt -> ret {body;}
auto f = [](int a) ->int {return a+1;};
std::cout
auto f1 = [](){return 1;};
等价于auto f2 = []{return 1;};
[]
不捕获任何变量[&]
捕获外部作用域中所有变量,并作为引用在函数体中使用(按引用捕获)[=]
捕获外部作用域中所有变量,并作为副本在函数体中使用(按值捕获)[=,&foo]
按值捕获外部作用域中所有变量,并按引用捕获foo变量。[bar]
按值捕获bar变量,同时不捕获其他变量[this]
捕获当前类中的this指针,让lambda表达式拥有和当前类成员函数同样的访问权限。如果已经作用了&
或者=
,就默认添加此选项。捕获this的目的是可以在lambda中使用当前类的成员函数和成员变量。2、声明式的编程风格、简洁的代码
class CountEven
{
int& count_;
public:
CountEven(int& count):count_(count)
{
}
void operator()(int val)
{
if(!(val & 1)) //val % 2 == 0
{
++ count_;
}
}
};
std::vector
std::vector
3、在需要的时间和地点实现闭包,使程序更灵活
ReadMe
下一篇:GO语言的汇编(一)