您是第: 个访问我网站的人!
站内搜索:
浏览信息 您当前的位置:首页 >> 浏览信息
C++ lambda表达式
【字体: 】   【时间:2019-04-28】  【作者:不學無數】  【关 闭】  【打 印

      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; };

  

关闭页面】【页面顶部
本站所有资源未经许可不得转载复制,违者必究。
© Copyright 2020-2025 www.yuzhilin.com.cn All Right Reaserved. 不学无数之家 拥有所有版权
地址:中国·光谷 E-mail:zhilinyu@163.com  鄂ICP备20001861号 技术支持:不学无数之家