C++11 lambda表达式
来源:互联网 发布:网络新闻稿 编辑:程序博客网 时间:2024/05/18 21:50
原文地址:http://www.cnblogs.com/zhuyp1015/archive/2012/04/08/2438176.html
总结:
1、[=]值传递访问x,y所以中间不修改x,y的值
int x = 10;
int y = 3;
int z;
z = [=]()mutable throw() -> int{
int n = x + y;
x = y;
y = n;
return n;
}
cout<<z
count<<x<<y
z=13
x=10 y=3
另外,capture 指定了在可见域范围内 lambda 表达式的代码内可见得外部变量的列表,具体解释如下:
[a,&b]
a变量以值的方式呗捕获,b以引用的方式被捕获。[this]
以值的方式捕获 this 指针。[&]
以引用的方式捕获所有的外部自动变量。[=]
以值的方式捕获所有的外部自动变量。[]
不捕获外部的任何变量。
2、通过函数体后面的(5,4)传入参数
int main()
{
int n = [](int x,int y){return x + y;}(5,4)
}
n = 9
3、使用lambda定义和使用普通函数
int main()
{
auto f = [](int x,int y){return x + y;}
count<<f(5,4)<<endl;1
}
4、Lambda结合STL算法一起使用
int main()
{
...
srand(time(NULL));
generate(a,a+10,[]()->int{return rand() % 100; });
for_each(a,a+10,[&](int i){count<<i<<" ";});
...
}
5、Lambda表达式的嵌套
int main()
{
int m =[](int x){return [](int y){return y*2}(x) + 3;}(5);
}
m=13
0 0
- 【c/c++】Lambda表达式
- C++11 学习笔记 lambda表达式
- C++11 学习笔记 lambda表达式
- C++11 学习笔记 lambda表达式
- C#--Lambda表达式
- C#:Lambda 表达式
- C++lambda表达式
- C++lambda表达式
- C# Lambda表达式
- C++:lambda表达式
- C#Lambda表达式
- 【c++】lambda表达式
- C++lambda表达式简记
- c#lambda表达式复习
- [C++]Lambda表达式简介
- 【C#】理解Lambda表达式
- 【C++】Lambda表达式
- C++lambda表达式
- 什么是Map/Reduce
- iptc example
- rails将类常量重构到数据库对应的表之后记
- Android 平台上长连接的实现
- 启动脚本
- C++11 lambda表达式
- DOCTYPE html PUBLIC 让人吐血的问题(转载)div.style.left为空
- (507C)codeforce
- iOS中Base64编码解码
- Java小技巧-在图片上写数据(数据封装成图片返回给前端)
- Jedis(Redis)使用示例
- 强制获取状态栏DecorView的高度
- Linux驱动之定时器和延时
- 如何修改wamp的mysql数据库密码