"lambda表达式"的优点是什么?

Ole*_*siy 8 c++ syntax lambda

lambda表达式的原因是以"更方便的方式"隐式生成函数对象.从下面的示例中可以看出,它不仅不太方便而且更长,而且还具有令人困惑的语法和符号.

是否有任何用途,它实际上使代码更具可读性?

cout << count(vec, [&](int a){ return a < x; }) << endl;  // lambda
cout << count(vec, Less_than<int> (x)) << endl;           // normal functor def-n
Run Code Online (Sandbox Code Playgroud)

AnT*_*AnT 14

它更具可读性,因为它将函数的实现放在调用它的位置,从而保持代码的自然从上到下的流程不变.

你看,普通的功能各有利弊.一方面,函数有助于减少代码中的重复,这使代码更具结构化和可读性.另一方面,函数打破了代码的自然流动并将控制转移到完全不同的位置.这可能会因为相当明显的原因而降低可读性:它就像读一本充满嵌套前向和后向引用的书.

因此,为了正确利用普通函数的属性,应该使用它们来实现经过深思熟虑,完整和隔离的抽象.通过这种方式,普通函数将提高代码的可读性.

但对于小型"一次性"一次性使用实用程序代码,普通功能不能很好地工作.它们实际上可以使代码的可读性大大降低.这就是lambda函数的用武之地.它们允许用户将一次性实用程序代码直接注入调用点,这是必要的.

  • 另外一点是 lambda 函数可以直接访问父上下文范围内的变量(例如,在这种情况下,如果需要,lambda 可以直接访问“vec”。)这是不必使一个单独的函数。 (2认同)
  • @AnT 所以如果我们总结一下,增强可读性是 lambda 表达式的主要好处。通过将逻辑放在调用者函数中并减少“一次性”函数,就这样了吗?请原谅我的无知,我仍在努力寻找 lambda 表达式的一些杰出实用程序(如果有的话)! (2认同)