lambda表达式的最简单形式是:
[](){};
这样就构成了lambda表达式的最基本组成部分,它实际上是在构造一个能够捕获作用域中的变量的无名函数对象的闭包,这里[]
就是起这个捕获的作用,()
里面就像普通函数一样写形参,花括号就是构造的闭包。
如果直接写像上面一样的简单形式,是不会执行的,只有最后加上括号调用了才会。同时自然的,最后的括号与前面的括号里的参数要对应。
int main()
{
[](){ std::cout<<"hahaha"<<endl; };//no output
[](){ std::cout<<"hahaha"<<endl; }();//worked
[](int a){ std::cout<<"cout << "<< a <<endl; }(100);// cout << 100
}
另一个用法是,我们可以将其作为函数的参数。当然,前提是返回的类型要符合函数的形参。例如在可以作为stl
中sort
函数中comparator
。
vector<int> arr{ 9, 5, 2, 7 };
std::sort(arr.begin(),arr.end(),[](int a,int b){return a < b;});
to be continued...
原文链接: https://www.cnblogs.com/drunknbeard/p/12875213.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/348020
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!