我正在学习在cpp中编写lamda表达式,下面是使用Visual Studio 2022 windows的代码
#include<iostream>
using namespace std;
int main()
{
int k = 98;
int l = 23;
auto lm_add = [k,l](int i, int j) {
return i + j;
};
cout << "addition using lambada : " << "cool" << lm_add << endl;
return 0;
想要返回给定变量的答案。
这个
auto lm_add = [k,l](int i, int j) {
return i + j;
};
使用 lambda 表达式初始化
lm_add
。在幕后,编译器生成一个未命名的唯一类型,其中包含具有指定签名的调用运算符,即采用两个整数,以及用于捕获的成员(也是两个整数)。该类型没有 <<
运算符将其通过管道传输到输出流。可以称为:
std::cout << lm_add(k,l);
但是,它无缘无故地捕获了
k
和 l
。也许您想要捕获变量,以便可以不带参数调用它:
auto lm_add = [k,l]() {
return k + l;
};
std::cout << lm_add();
或者不捕获它们并传递参数:
auto lm_add = [](int i,int j) {
return i + j;
};
std::cout << lm_add(k,l);