C++11 Lambda 表达式
来源:互联网 发布:php薪资待遇 编辑:程序博客网 时间:2024/05/20 07:36
转自:http://www.cnblogs.com/hujian/archive/2012/02/14/2350306.html
class CTest{public: CTest() : m_nData(20) { NULL; } void TestLambda() { vector<int> vctTemp; vctTemp.push_back(1); vctTemp.push_back(2); // 无函数对象参数,输出:1 2 { for_each(vctTemp.begin(), vctTemp.end(), [](int v){ cout << v << endl; }); } // 以值方式传递作用域内所有可见的局部变量(包括this),输出:11 12 { int a = 10; for_each(vctTemp.begin(), vctTemp.end(), [=](int v){ cout << v+a << endl; }); } // 以引用方式传递作用域内所有可见的局部变量(包括this),输出:11 13 12 { int a = 10; for_each(vctTemp.begin(), vctTemp.end(), [&](int v)mutable{ cout << v+a << endl; a++; }); cout << a << endl; } // 以值方式传递局部变量a,输出:11 13 10 { int a = 10; for_each(vctTemp.begin(), vctTemp.end(), [a](int v)mutable{ cout << v+a << endl; a++; }); cout << a << endl; } // 以引用方式传递局部变量a,输出:11 13 12 { int a = 10; for_each(vctTemp.begin(), vctTemp.end(), [&a](int v){ cout << v+a << endl; a++; }); cout << a << endl; } // 传递this,输出:21 22 { for_each(vctTemp.begin(), vctTemp.end(), [this](int v){ cout << v+m_nData << endl; }); } // 除b按引用传递外,其他均按值传递,输出:11 12 17 { int a = 10; int b = 15; for_each(vctTemp.begin(), vctTemp.end(), [=, &b](int v){ cout << v+a << endl; b++; }); cout << b << endl; } // 操作符重载函数参数按引用传递,输出:2 3 { for_each(vctTemp.begin(), vctTemp.end(), [](int &v){ v++; }); for_each(vctTemp.begin(), vctTemp.end(), [](int v){ cout << v << endl; }); } // 空的Lambda表达式 { [](){}(); []{}(); } }private: int m_nData;};
{ int n = [] (int x, int y)->int{ return x + y; }(5, 4); cout << n << endl;}运行结果为:9
{ auto f = [] (int x, int y) { return x + y; }; cout << f(21, 12) << endl;}运行结果为:33
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表达式
- ubuntu无法ssh连接
- ======FragmentTabHost======
- 开通博客了~
- JavaScript 类(class)、构造函数(constructor)、原型(prototype)
- <PY>Pycharm使用()
- C++11 Lambda 表达式
- 【转载】Live555 实战之框架简介
- Android开发请求网络方式详解
- 第十三章 BIRT报表引擎API及报表API
- javascript知识详解
- Android开发模板 ------ 不简单的SimpleAdapter
- android 如何在sd卡下创建指定的多层文件夹
- jQuery EasyUI 应用 - 创建 CRUD 数据网格(DataGrid)
- 使用ptrace跟踪进程