美文网首页
Lambda表达式

Lambda表达式

作者: 黑山老水 | 来源:发表于2017-07-20 08:58 被阅读9次

查看Reference

是什么:

Lambda expressions is a way to define an anonymous functions.

怎么用:

lambda表达式语法

以上3 4 5 都可以被省略掉

  1. 用来捕获函数体外面的变量的从句(capture clause)
  2. 表明返回变量的type
  3. 输入变量
  4. 函数体

捕获从句的使用:

&表示获得函数体外的变量的引用,=表示获得函数体外变量的值。
比如有变量total和变量factor
当想用捕获total的引用和factor的值,可以用以下方法:

[&total, factor]  
[factor, &total]  
[&, factor]  
[factor, &]  
[=, &total]  
[&total, =] 

但是捕获从句的前后两句不能重合使用,比如
[&, &i]则会保持,因为前面的&表示默认用捕获外界变量的引用。也就是说捕获从句之所以存在两个部分是可以方便使用不同的捕获方式。

使用例子

用于计算:
int main()  
{  
   int m = 0;  
   int n = 0;  
   [&, n] (int a) mutable { m = ++n + a; }(4);  
   cout << m <<" "<< n << endl;  
}  

输出:5 0

用于作为比较函数,在std::sort()被调用时使用:
vector<int> s = {2, 4, 6, 8, 1};
std::sort(s.begin(), s.end(), [](int a, int b) {
        return b < a;   
    });

相关文章

网友评论

      本文标题:Lambda表达式

      本文链接:https://www.haomeiwen.com/subject/jyqdkxtx.html