c++11 匿名函数之 [&]

参考:

https://blog.csdn.net/qq_30486241/article/details/49702467

力扣 16:最接近的三数之和

官方题解中关于如下代码解释

//解释见参考链接
auto update = [&](int cur) {
            if (abs(cur - target) < abs(best - target)) {
                best = cur;
            }
        };

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++11标准中,引入了Lambda表达式,也就是匿名函数。Lambda表达式是一个可以定义和调用函数的快捷方式,它可以在函数内部定义一个匿名函数,而不需要为这个函数命名。 Lambda表达式的语法形式如下: ``` [capture-list](parameter-list) -&gt; return-type { function-body } ``` 其中,`capture-list`表示捕获列表,用于在Lambda表达式中访问外部变量;`parameter-list`表示参数列表;`return-type`表示返回类型;`function-body`表示函数体。 Lambda表达式可以作为函数对象(Function Object)使用,可以在STL中的算法函数(如`std::sort()`)中使用。 例如,下面的代码演示了如何使用Lambda表达式对一个数组进行排序: ```c++ #include &lt;iostream&gt; #include &lt;algorithm&gt; int main() { int arr[] = { 5, 2, 1, 4, 3 }; // 使用Lambda表达式对数组进行排序 std::sort(arr, arr + 5, [](int a, int b) { return a &lt; b; }); // 输出排序后的数组 for (int i = 0; i &lt; 5; ++i) { std::cout &lt;&lt; arr[i] &lt;&lt; &quot; &quot;; } std::cout &lt;&lt; std::endl; return 0; } ``` 输出结果为: ``` 1 2 3 4 5 ``` 在Lambda表达式中,我们使用`[]`来表示捕获列表。捕获列表包括两种形式: - `[]`:表示不捕获任何外部变量; - `[&amp;]`或`[=]`:表示捕获所有外部变量,其中`&amp;`表示按引用捕获,`=`表示按值捕获。 除此之外,我们还可以使用`[x, &amp;y]`这样的形式来指定捕获哪些外部变量,其中`x`表示按值捕获,`&amp;y`表示按引用捕获。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值