zoukankan      html  css  js  c++  java
  • C++ lambda表达式

      lanmbda表达式形式如下:

      [capture list] (parameter list) ->return type { function body }

     捕获列表

      capture list 为捕获列表,是函数体内局部变量的列表(通常为空)。

      捕获有值捕获和引用捕获两种形式:

      auto f1 = [v1]{ return v1; };  //值捕获

      auto f2 = [&v2] { return v2;}; //引用捕获

      隐式捕获

      在捕获列表中填写=(值捕获)或&(引用捕获)来让编译器推断捕获列表。

      混用显示捕获和隐式捕获时,列表中第一个元素必须是&或=,&和=不能同时存在。

      并且在使用&后,显示捕获不能有引用捕获;使用=亦然。

      可变lambda

      如果希望能改变捕获的值,应在参数列表首加上关键字mutable:

      auto f = [v1] () mutable { return ++v1; };  //v1会被改变

     传递参数

      lambda表达式不能含有默认参数。

     返回值

      默认情况下,如果lamba体内包含除return外语句,编译器假定返回void,需要自定返回类型,需要使用尾置返回类型:

      auto f = [] (int i) -> int  { if(i>0) return i; else return -i; };

      

  • 相关阅读:
    CSS深入之第四天
    CSS之第三天总结
    第二天对CSS的学习
    开始走进CSS世界
    Hbuilder实用技巧
    项目总结
    CSS3的chapter6
    CSS3的chapter5
    CSS3的chapter4
    CSS3的chapter3
  • 原文地址:https://www.cnblogs.com/wshr007/p/10450897.html
Copyright © 2011-2022 走看看