C++中泛型算法详解2:lambda表达式
作者:互联网
前言
上一节关于泛型算法的介绍中,我们使用过sort排序算法,仅仅传入了vector的开头和结尾的两个迭代器。该算法还会接受第三个参数:谓词参数(predicate)
谓词是一个可调用的表达式,返回一个能用做条件的值。
所有的标准库使用的谓词分为两类:
- 一元谓词(单一参数)
- 二元谓词(两个参数)
介绍lambda
一个lambda表示一个可调用代码单元。我们可以把它理解为一个未命名的内敛函数。
形式如下:
[capture list] (parameter list) -> return type {function body}
完整的lambda包括四部分
- capture list捕获列表:lambda所在函数定义的局部变量的列表
- parameter list 参数列表
- return type 返回类型
- function body: 函数体
lambda捕获
指定lambda返回类型
如果lambda的函数体中包含return之外的任何语句,编译器假定lambda返回void
所以,当我们需要为lambda定义返回类型时,必须使用尾置返回类型。
关于尾置返回类型(trailing return type)
- 任何函数的定义都能使用尾置返回
- 这种形式对于返回类型比较复杂的函数最有效
- 方便清楚的看到func返回类型
- 原本的函数返回类型位置,可以用
auto
替代
auto func(int i) -> int(*)[10]
比如上式表示返回一个指向包含10个整数数组的指针。
标签:返回,return,函数,list,C++,谓词,中泛,lambda 来源: https://blog.csdn.net/allenhsu6/article/details/113790936