1. #include <functional>
  2. #include <iostream>
  3.  
  4. int main()
  5. {
  6. using namespace std;
  7.  
  8. int i = 3;
  9. int j = 5;
  10.  
  11. // The following lambda expression captures i by value and
  12. // j by reference.
  13. function<int (void)> f = [i, &j] { return i + j; };
  14.  
  15. // Change the values of i and j.
  16. i = 22;
  17. j = 44;
  18.  
  19. // Call f and print its result.
  20. cout << f() << endl;
  21. }

  

可以看到i是拷贝值,j是引用值,所以是24,结果26

  • 把lambda表达式当作参数传送

  1. #include <list>
  2. #include <algorithm>
  3. #include <iostream>
  4. int main()
  5. {
  6. using namespace std;
  7. // Create a list of integers with a few initial elements.
  8. list<int> numbers;
  9. numbers.push_back();
  10. numbers.push_back();
  11. numbers.push_back();
  12. numbers.push_back();
  13. numbers.push_back();
  14.  
  15. // Use the find_if function and a lambda expression to find the
  16. // first even number in the list.
  17. const list<int>::const_iterator result =
  18. find_if(numbers.begin(), numbers.end(),[](int n) { return (n % ) == ; });//查找第一个偶数
  19.  
  20. // Print the result.
  21. if (result != numbers.end())
  22. {
  23. cout << "The first even number in the list is " << *result << "." << endl;
  24. } else
  25. {
  26. cout << "The list contains no even numbers." << endl;
  27. }
  28. }
  • lambda表达式嵌套使用

  1. #include <iostream>
  2.  
  3. int main()
  4. {
  5. using namespace std;
  6.  
  7. // The following lambda expression contains a nested lambda
  8. // expression.
  9. int timestwoplusthree = [](int x) { return [](int y) { return y * ; }(x) + ; }();
  10.  
  11. // Print the result.
  12. cout << timestwoplusthree << endl;
  13. }
  • ambda表达式使用在高阶函数里

  1. #include <iostream>
  2. #include <functional>
  3.  
  4. int main()
  5. {
  6. using namespace std;
  7.  
  8. auto addtwointegers = [](int x) -> function<int(int)> {
  9. return [=](int y) { return x + y; };
  10. };
  11.  
  12. auto higherorder = [](const function<int(int)>& f, int z) {
  13. return f(z) * ;
  14. };
  15.  
  16. // Call the lambda expression that is bound to higherorder.
  17. auto answer = higherorder(addtwointegers(), );
  18.  
  19. // Print the result, which is (7+8)*2.
  20. cout << answer << endl;
  21. }

C++ lambda表达式 (二)的更多相关文章

  1. Java 8 Lambda 表达式(二)

    lambdas 实现 Runnable 接口 下面是使用 lambdas 来实现 Runnable 接口的示例: // 1.1使用匿名内部类 new Thread(new Runnable() { @ ...

  2. lambda表达式 <二>

    概念了解: 1.什么是匿名委托(匿名方法的简单介绍.为什么要用匿名方法) 2.匿名方法的[拉姆达表达式]方法定义 3.匿名方法的调用(匿名方法的参数传递.使用过程中需要注意什么) 什么是匿名方法? 匿 ...

  3. 背后的故事之 - 快乐的Lambda表达式(一)

    快乐的Lambda表达式(二) 自从Lambda随.NET Framework3.5出现在.NET开发者眼前以来,它已经给我们带来了太多的欣喜.它优雅,对开发者更友好,能提高开发效率,天啊!它还有可能 ...

  4. 【转】背后的故事之 - 快乐的Lambda表达式(一)

    快乐的Lambda表达式(二) 自从Lambda随.NET Framework3.5出现在.NET开发者眼前以来,它已经给我们带来了太多的欣喜.它优雅,对开发者更友好,能提高开发效率,天啊!它还有可能 ...

  5. .NET进阶篇05-Linq、Lambda表达式

    知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂 内容目录 一.Lambda表达式1.匿名方法2.Lambda表达式二.Linq概述三.查询操作符1.linq初见2.常用查询操作符筛选排序分组连 ...

  6. IDEA问题java: -source 1.6 中不支持diamond、 lambda 表达式

    文章目录 一.问题:连片的java: -source 1.6 中不支持 diamond 运算符.lambda 表达式 二.解决方法: 1.在微信群里问大佬,大佬在玩游戏,回复的比较慢 2.自己查Goo ...

  7. CRL快速开发框架系列教程二(基于Lambda表达式查询)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  8. Util应用程序框架公共操作类(十二):Lambda表达式公共操作类(三)

    今天在开发一个简单查询时,发现我的Lambda操作类的GetValue方法无法正确获取枚举类型值,以至查询结果错误. 我增加了几个单元测试来捕获错误,代码如下. /// <summary> ...

  9. Util应用程序框架公共操作类(八):Lambda表达式公共操作类(二)

    前面介绍了查询的基础扩展,下面准备给大家介绍一些有用的查询封装手法,比如对日期范围查询,数值范围查询的封装等,为了支持这些功能,需要增强公共操作类. Lambda表达式公共操作类,我在前面已经简单介绍 ...

  10. 十二、C# 委托与Lambda表达式(匿名方法的另一种写法)

    委托与Lambda表达式   1.委托概述 2.匿名方法 3.语句Lambda 4.表达式Lambda 5.表达式树   一.委托概述 相当于C++当中的方法指针,在C#中使用delegate 委托来 ...

随机推荐

  1. 错误处理:java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter

    部署项目时,启动Tomcat一直出错:java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter SEVE ...

  2. 使用quick自己定义Button

    使用quick时自己封装的类存放于特定的文件夹.便于以后使用 以下是作者经经常使用到的一个按钮 local MyButton = class("MyButton") functio ...

  3. angularjs $http 服务

    <!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...

  4. JMeter使用碰到的问题

    1.创建http请求 使用threadGroup-->add-->sampler--http request 2.使用计数器 使用threadGroup-->add-->con ...

  5. java9新特性-14-多分辨率图像 API

    1.官方Feature 251: Multi-Resolution Images 263: HiDPI Graphics on Windows and Linux 2.产生背景 在Mac上,JDK已经 ...

  6. java9新特性-3-JDK 和 JRE 的改变

    1.JDK 与 JRE 的关系 JDK :JavaDevelopmentKit (Java开发工具包) JRE :JavaRuntimeEnvironment (Java运行环境)     说明: J ...

  7. vuejs scope

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. python制造模块

    制造模块: 方法一: 1.mkdir /xxcd /xx 2.文件包含: 模块名.py setup.py setup.py内容如下:#!/usr/bin/env pythonfrom distutil ...

  9. python中修改函数内部的变量会发生什么

    最近写python遇到个函数内部变量使用外部变量的问题,现在总结下吧 #!/usr/bin/env python a = 100def su(): a = a + 1 print(a) s = su( ...

  10. vue项目的环境变量

    关于项目中环境变量的总结 背景 项目环境一般分为开发环境,测试环境,线上环境 因为每个环境的接口域名.webpack 配置都是不同的,所以在打包构建时,我们需要区分这些环境,这时就用到了环境变量 在工 ...