两个代码段之间有什么区别?

What is the difference between the two snippets?

本文关键字:什么 之间 区别 段之间 两个 代码      更新时间:2023-10-16

我需要一些解释[](int x){return x=x+5;}[] (int x)是什么意思?

我跑了varr.apply(incelemby5)其中incelemby5将数组元素增加 5。得到相同的结果

varr1 = varr.apply([](int x){return x=x+5;});
int incelemby5(int x) {
return x+5;
}

C++11 引入了 Lambda 表达式。您可以立即创建一个函数对象(具有operator()(。每个 lambda 都有一个唯一的类型名称,因此编译器可以比函数指针更容易优化它,函数指针是同一签名的相同类型名称。

顺便说一句,这两个样本将产生相同的效果x因为 lambda 的第一个参数不是左值引用。

varr1 = varr.apply([](int x){return x=x+5;});
varr1 = varr.apply([](int x){return x+5;});