C++中lambda表达式(匿名函数)

本文详细介绍了C++中的lambda表达式,包括其引入目的、定义、捕获列表和返回方式。lambda表达式可以捕获局部变量并在函数体中使用,常用于STL算法。文章讲解了值捕获、引用捕获、隐式捕获和可变lambda,并通过实例展示了其用法。
摘要由CSDN通过智能技术生成

1、lambda表达式的引入

        lambda表达式(也叫匿名函数)的引入的主要目的是,让您能够使用表达式用作接受函数指针或函数符的函数的参数。很多时候lambda和普通函数(函数指针)的功能一样。但与普通函数不同的地方在于lambda可以捕获局部变量,lambda表达式可以在函数体中使用该变量,和参数传递的效果一样。但在某些场合中,lambda捕获则表现出巨大的作用,比如当lambda表达式作为谓词使用在STL的算法函数中的时候。比如实现一个函数,将一个vector < int >中的大于某一个数的修改为0。

注:谓词

        谓词是一个可调用的表达式,其返回结果是一个能用作条件的值。标准库算法所使用的谓词分为两类:一元谓词(只接受一个参数)和二元谓词(有两个参数)。接受谓词参数的算法对输入序列中的元素调用谓词。因此,元素类型必须能转换为谓词的参数类型。比如标准库函数中用查找的find_if(),该函数的第一个和第二个参数是一个迭代器,第三个则是一个谓词。返回第一个使谓词返回非0只的元素,若不存在这样的元素,则返回尾迭代器。find_if()的定义如下:

template<class InputIterator, class UnaryPredicate>
  InputIterator find_if (InputIterator first, InputIterator last, UnaryPredicate pred)
{
    while (first!=last) {
        if (pred(*first)) return first;
        ++first;
    }
    return last;
}

 

2、lambda表达式

(1)lambda表达式定义

       lambda表达式表示一个可调用的代码单元,可理解为一个未命名的内联函数(匿名函数)。与任何函数类似,lambda表达式有一个返回类型,一个参数列表,一个函数体。但与函数不同的是,lambda可能定义在函数内部。lambda表达式的形式如下

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值