C++ 中的Lambda表达式

打印 上一主题 下一主题

主题 988|帖子 988|积分 2964

目录

简介

Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。
闭包就是能够读取其他函数内部变量的函数,可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
C++中的Lambda表达式从C++11开始引入,完整的声明如下:
  1. [ 捕获 ] <模板形参> 约束(可选)
  2. ( 形参 ) lambda说明符 约束(可选) { 函数体 }
复制代码
上面的 、约束(可选)lambda说明符 属于较新的标准(c++17起),一般用的比较少,后面主要说明 [ 捕获 ] 部分。
形参函数体 与具名函数的定义一致,没有区别。
一个简单的Lambda表达式应用场景,代码如下:
[code]#include #include #include using namespace std;int main(){    vector vec{ 3, 4 };    //降序排序    sort(vec.begin(), vec.end(), [](int a, int b) {return a > b; });    for (size_t i = 0; i < vec.size(); i++)    {        cout
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

铁佛

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表