除了方便之外,还有lambda的其他优点吗?

NPS*_*NPS 3 c++ lambda c++11

标题可能不准确,但我想不出任何简短的标题.(随意建议一个或编辑我的问题.)

我想知道使用lambda函数是否有任何其他优点,除了事实上不需要显式定义(和写入)函子的整个类定义或定义一个单独的函数(可能)一旦.换句话说,lambda是为了方便而引入的还是更多的呢?

编辑:有一件事要添加到我的问题中.Lambdas允许程序员写得更少,更方便,因此他们不容易出错.这本身不仅仅是方便而是与其相关的不同的东西/理由.

Max*_*kin 8

请参阅将lambda函数添加到C++标准的建议 :lamdas的完整动机:

如果C++支持lambda,那么使用C++标准库算法会更加愉快.Lambda函数可以让人们在许多情况下使用C++标准库算法,目前很容易编写for循环.许多开发人员仅仅因为语法开销而不使用函数对象.


eca*_*mur 5

Lambdas主要是语法糖,但并非完全如此.关于lambdas的一点是它们通过下标顺序[expr.prim.lambda]中的直接初始化来捕获数组:

22 - [...](对于数组成员,数组元素按增加的下标顺序进行直接初始化.)[...]

否则,这是非常难以实现的; 有必要使用类似的东西来构造索引参数包std::index_sequence,并且语义不完全相同.

lambdas可以做的另一件事是捕获(可变参数)参数包; 这通常不能完成(因为结构成员不能成为参数包扩展),除非通过类似的东西std::tuple.