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
本文来自博客园,作者:MartinLwx,转载请注明原文链接:https://www.cnblogs.com/MartinLwx/p/14268827.html
🚀🚀🚀博客园已不再更新文章,最新文章请查看👉Github pages