可以在源代码中内联lambda函数。将这些过程作为参数传递给其他模块非常有用。但是,这也可以通过函数指针来实现。是否有任何良好实践或经验法则关于我何时应该在C ++ 11中选择lambdas而不是函数指针?
答案 0 :(得分:4)
lambda表达式可以捕获变量,创建一个具有与之关联的数据的闭包类型。您无法将数据绑定到函数指针,该函数只能对其参数和全局数据进行操作。
答案 1 :(得分:1)
如果你的lambda表达式超过几行(三个?),最好用它来创建一个函数。
答案 2 :(得分:1)
选择指向函数的lambda表达式。
我认为你不应该选择函数指针。相反,在C ++ 11中你有函数对象和lambda,一个lambda被认为是一个匿名的本地函数对象(虽然没有两个lambda表达式是相同的;它们没有返回类型;它们是闭包类型)。
我认为它们是C ++支持的C技术遗产。除非您使用C或遗留代码,否则您可以考虑不要过多关注函数指针。
指向函数的指针可以转换为不同的指针到函数类型。
lambda可以访问其范围的变量,您可以在捕获列表中指定这些变量。
[]{}
。小时只使用一次:lambda
当不小或重用时:功能对象