前言
很多时候,我们需要定义一些小的函数
比如在sort()
时指定比较函数cmp()
:
sort(a+1, a+1+n, cmp) bool cmp(const int a, cnost int b) {return a > b;}
但这么小的函数写在外面会有一点不优雅
于是我们可以用 λ表达式 来解决这个问题
解决方案
Lambda表达式如果叫做匿名函数的话可能更能凸显他的特性
详细情况请参阅参考资料中的链接
对于竞赛来讲,似乎Lambda表达式这么用就好:
static auto cmp = [](int a, int b) {return a > b;}; sort(a+1, a+1+n, cmp);
或者再做绝一点:
sort(a+1, a+1+n, [](int a, int b) {return a > b;});
是不是感觉很强 ( •̀ ω •́ )y
兼容性
无论是 Lambda表达式 或是auto
都是 C++ 11里的东西
直接交到不支持 C++ 11 的OJ上会CE
于是我们需要加上下面这句指令,以使编译器忽略该错误:
#pragma GCC diagnostic error "-std=c++11"
当然gcc的版本需要在4.7以上,否则编译器根本不知道Lambda表达式是什么 QwQ