Lambda表达式

来源:互联网 发布:五十而知天命 编辑:程序博客网 时间:2024/06/03 17:28

1. lambda 表达式:未命名的内联函数
优势:
①需要一个函数,但又不想费神去命名一个函数(匿名函数),尤其是该函数仅用到一次
②也使代码易于理解
③使得泛型算法的谓词参数不再受限
2. [ ] ( ) -> return type { }
Lambda表达式由四部分组成
①[ ]:值捕获列表,lambda表达式所在函数中定义的局部变量列表(局部static以及函数外定义的变量可以直接使用)
②( ):参数列表(可省略)
③->return type:返回类型(可省略)

  • 仅包含return语句,则返回类型依据其返回值而定
  • 否则&未指定返回类型,则推断为void,此时若返回非void则出错

④{ }:函数体
3.auto f = ->{ }; //lambda表达式对象
4.值捕获与引用捕获
值捕获:变量值在其创建时便拷贝——[=]隐式值捕获
引用捕获:变量传入其引用,确保lambda调用时该引用有效(流对象)——[&]隐式引用捕获
也可以混用,但第一个元素必须是=或&,以指定默认方式
5.注意点
lambda表达式参数列表不能有默认参数(又不会调用多次)。
[v] ( ) mutable{return ++v}; //可以使得捕获的值修改,但不会影响原来的变量
这里写图片描述

0 0