我在MSDN页面上阅读了这个解释,了解了函数和函数指针相对于lambda表达式的优点。 “保留国家”的能力是什么意思?它是否与通过ref或value在封闭范围中捕获一些变量的能力有关?C++'保留状态'是什么意思?
http://msdn.microsoft.com/en-us/library/dd293608.aspx
在编写代码时,你可能会使用函数指针和功能 对象来解决问题和进行计算。功能 指针和函数对象有优点和缺点: 函数指针涉及最小的语法开销,但它们不在 保留一个范围内的状态;函数对象可以保持状态,但是它们需要类定义的语法开销。
Lambda表达式是一种编程技术,它结合了函数指针和函数对象的好处,并且避免了其缺点。 Lambda表达式非常灵活,并且可以保持 状态,就像函数对象一样,并且它们的紧凑语法将删除需要函数对象所需的类定义的 。 Lambda表达式使您能够编写代码不那么麻烦 并且比等效的函数对象更不容易出错。
以下示例将lambda表达式的使用与使用函数对象的 进行了比较。第一个示例使用lambda表达式 向控制台打印矢量对象中的每个元素是否为偶数或奇数的 。第二个示例使用函数对象来完成相同的任务 。
您能指出一些相关的主题范围,状态,维护状态,lambda表达式的优点吗?
感谢和问候
哼......你不需要在lambda定义的某个地方使用'mutable'来工作吗? –
@MatthieuM。是的,谢谢。我几乎总是通过参考来捕捉,所以我忘了这一点。 –
@BenjaminLindley但是,当通过引用捕获时,您需要一个可修改的引用对象的修改,不是吗? –