标签(空格分隔): Lambda c++11 c++
在做径向基函数插值(RBF)的过程中,由于三维插值过程中要对Point Class数据进行某一个规则的排序,所以用上了之前Cpp Primer中了解了一点点的Lambda表达式,Python中也遇到过。
lambda函数
名称lambda来自lambda calculus(λ演算),一种定义和应用函数的数学系统。这个系统让您能够使用匿名函数——即无需给函数命名。在C++11中,对于接受函数指针或函数符的函数,可以使用匿名函数定义(lambda)作为其参数。 例如:
sort(myVec.begin(), myVec.end(), [](const Foo &foo1, const Foo &foo2)
{ // 排序三:使用 lambda 的方式进行排序,排序的方法和 Foo::decrease 一样
if (foo1.a > foo2.a)
{
return true;
}
else if (foo1.a == foo2.a)
{
return foo1.b > foo2.b;
}
return false;
} );
bool f3(int i){ return i % 3 == 0; }
//f3()对应的lambda为:
[ ](int i) {return i % 3 ==0 ;}
差别有两个:
- 使用[]代替了函数名(这就是匿名的由来)
- 没有声明返回类型。返回类型相当于使用decltyp根据返回值推断得到的,这里为bool。