欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

C++ lambda表达式

发布时间:2025/7/14 c/c++ 46 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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; };

  

转载于:https://www.cnblogs.com/wshr007/p/10450897.html

总结

以上是生活随笔为你收集整理的C++ lambda表达式的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。