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

news/2024/11/17 20:30:12/

从C++11开始,C++也支持使用lambda表达式(匿名函数)。Lambda表达式是一种便捷的方式,可以定义一个函数对象,而无需使用显式的函数对象类型或函数指针语法。

C++中的 lambda表达式的基本语法如下:

[capture list] (parameter list) -> return type { function body }

其中各个部分的含义如下:

  • capture list:用于指定所捕获的外部变量列表。可以使用以下符号:
    • []:不捕获任何外部变量。
    • [&]:以引用的方式捕获所有外部变量。
    • [=]:以值的方式捕获所有外部变量。
    • [var1, var2, ...]:指定要捕获的具体变量,可以使用值捕获或引用捕获。例如,[&var1, =var2]表示对var1采用引用方式捕获,对var2采用值捕获。
  • parameter list:用于指定函数参数列表,与普通函数定义一样。
  • return type:用于指定函数返回值类型,可以省略,编译器会自动推断返回类型。
  • function body:用于定义函数的代码块。

下面是一个简单的例子,展示了如何使用lambda表达式计算两个整数的和:

#include <iostream>
using namespace std;int main()
{// 定义一个lambda表达式,计算两个整数的和auto sum = [](int a, int b) -> int {return a + b;};// 使用lambda表达式计算两个整数的和cout << sum(2, 3) << endl; // 输出 5return 0;
}

在这个例子中,我们使用auto关键字定义了一个lambda表达式,并将其赋值给变量sum。这个lambda表达式接受两个整数参数ab,返回它们的和。在main()函数中,我们使用这个lambda表达式计算了两个整数的和,并输出结果。

需要注意的是,lambda表达式也可以作为其他函数的参数,例如std::for_each()std::sort()std::transform()等STL算法中的函数。使用lambda表达式可以让代码更加简洁和紧凑。


http://www.ppmy.cn/news/272005.html

相关文章

【玩转Linux操作】硬链接和软连接

&#x1f38a;专栏【玩转Linux操作】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题&#x1f970; 欢迎大家访问“在下小吉.”&#xff08;偷偷告诉你这个是我的大号哦&#…

1512C. Nastia and a Hidden Permutation

先确认出1的位置…n/2次 用每个值与1做 1 号运算…,n-1次 不会超过3*n/2次 如果数列有奇数个元素&#xff0c;此时如果1在最后一个位置就会被忽略掉 所以如果p没被赋值1就在最后一个位置上 //cyc #pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2,f…

CodeForces - 1512C和CodeForces - 1512D

CodeForces - 1512C 给一串包含0&#xff0c;1&#xff0c;&#xff1f;的字符串&#xff0c;并给出a,b。可以将字符串中的&#xff1f;改成0或者1.最终使字符串中有 a 个 0&#xff0c;b 个 1 &#xff0c;并且字符串回文。 用a,b减去原字符串中有多少个0或1&#xff0c;再从两…

codeforces 1512D Corrupted Array

链接&#xff1a; https://codeforces.com/problemset/problem/1512/D 题意&#xff1a; 给一个数组b&#xff0c;有n2个数字。如果能找到n个数字的和&#xff0c;等于其中另一个数字&#xff0c;就输出这n个数字。 本题我们只需要给这n2个数字排序&#xff0c;求前n个数字…

ZYNQ-迷恋ZYNQ-FPGA开发板资源分享

整理一下手上的米联板子的资源&#xff0c;除了一款K7和A7的FPGA板子大部分都是ZYNQ的&#xff0c;后期会有其他板卡资料陆续发送包括&#xff1a; 米联开发板 能找到的所有米联开发板的资料&#xff0c;足够学习使用。 MA701-100T MA703-35T-V2…

CodeForces 1512G : Short Task 数学

传送门 题目描述 给你一个数&#xff0c;然你判断哪个数的所有约数和等于这个数 分析 比赛的时候寻思着这应该是线性筛的某种变形&#xff0c;奈何自己是数论白痴推了半天没推出结果 赛后才发现这道题可以直接用埃筛莽过去&#xff1f;&#xff1f;大意了啊 代码 #pragma…

Codeforces 1512E 思维+构造

1512E 题意&#xff1a;找到给定区间长度并且区间和为s的序列&#xff1b; 题解&#xff1a;序列可能有多种情况&#xff0c;可以采用较为连续的序列来表示&#xff0c;这样 可以保证序列的每个值不会大于n&#xff1b; 步骤&#xff1a; 假如一个数字s&#xff0c;和区间长度…

CodeForces 1512F : Education 模拟

传送门 题目描述 给你一个序列 a i a_{i} ai​和 b i b_{i} bi​&#xff0c;你如果在 i i i点停留一天&#xff0c;可以或者 a i a_{i} ai​单位的金钱&#xff0c;你如果想从 i i i点移动到 i 1 i 1 i1 点&#xff0c;需要一天时间&#xff0c;并支付 a i a_{i} ai​单位…