C++中的Lambda表达式

前言

lambda表达式是自C++11之后有的新功能,自此之后就可以很方便地写匿名函数啦!

简介

通用lambda表达式如下所示⬇️

[capture clause] (parameters) -> return_type
{
		...
}
  • Parameters:就是参数,平时写函数参数怎么填这里就怎么填
  • return-type:通常由编译器来决定,我们可以不用显式声明
  • [capture clause]
    • 🆚和普通函数相比,lambda表达式是可以通过特殊设置来访问外部变量的,可以"捕获"到想要的变量
    • []:只能使用lambda表达式自己的局部变量。
    • [&]:可以通过引用传递的方式使用所有的外部变量
    • [=]:可以通过值传递的方式使用所有的外部变量
    • [a, &b]:a是通过值传递的,b是通过引用传递的,也就是分别指定

应用

  • 在写sort函数的时候,经常要写自己的比较函数cmp,如果说cmp比较简单不想独立写成一个函数,可以考虑用lambda表达式,比如让一个vector的值降序排列⬇️

    sort(v.begin(), v.end(), [](const int x, const int y) {
    		return x > y;
    });
    
  • 更大方面来说,能和STL更好的配合使用

  • 在C++14以后,甚至可以还可以初始化,比如[x = 3] { return x;},会返回3

posted @ 2021-01-12 19:04  MartinLwx  阅读(167)  评论(0编辑  收藏  举报