【发布时间】:2018-04-18 12:23:03
【问题描述】:
我最近开始研究供个人使用的 lambda。我已经编码了几年,我已经发布了多个产品,但是,我从来没有发现自己需要使用 lambdas。我已经阅读了有关各种 lambda 问题的其他堆栈交换答案,但我还没有找到一个解释来展示一个非常简单的示例,该示例真正推动了 lambda 是必要的想法(在某些情况下)。在做了一些研究之后,我不相信 lambdas 的某些特定用途不能用标准函数来实现,但是,这并不意味着什么,因为我的主题范围非常有限。
谁能提供一个相当简单的 lambdas 用例来演示它们如何比典型函数更强大(在正确的情况下)?
【问题讨论】:
-
您不能使用函数来替代捕获 lambda,但您可以将
structs 与适当的operator()一起使用。只是该结构由 90% 不必要的样板组成,您可以使用 lambda 跳过这些样板。 -
我曾经用它来对一些自定义数据类型的向量进行排序,所以我只定义了一个 lambda 函数。但我刚刚意识到我也可以使用
std::greater。所以我也很想看看答案 -
“更强大”是什么意思?恕我直言,lambdas 只是一个工具。如果没有理由使用它,请不要使用它。
-
@megabyte1024- 好吧,我特别提到“更强大......(在正确的情况下)。类似于在某些情况下向量比数组更强大,而在其他情况下数组比向量更强大。我特意询问了 lambda 占上风的情况,但是,根据目前的答案,我的措辞可能不适用。
-
关于函子,this question 非常彻底地回答了您的问题,并且从 C++11 开始,lambdas 现在适合大多数用例