gpt4 book ai didi

c++ - C++0x lambda 和 operator()、闭包和仿函数之间的区别

转载 作者:可可西里 更新时间:2023-11-01 17:00:24 25 4
gpt4 key购买 nike

我确信我了解了构造的一般要点,但我看不到它们在 C++ 中的用途。我已经在 SO 和其他地方阅读过关于该主题的先前帖子,但我不明白为什么它们应该成为一种新的语言功能。

我想回答的事情是这样

  • lambda 和接受函数/仿函数的模板参数有什么区别。

  • 闭包只是一个具有某些设置对象状态(作用域?)的仿函数吗?

  • 这些结构的“ killer 级应用”是什么?还是典型的用例?

最佳答案

Lambda 实际上只是仿函数的语法糖。你可以自己做这一切:定义一个新类,创建成员变量来保存捕获的值和引用,将它们连接到构造函数中,编写 operator()(),最后创建一个实例和通过它。或者,您可以使用 1/10 的 lambda,它的代码量是原先的 1/10,但工作原理相同。

不捕获的 Lambda 可以转换为函数指针。所有 lambda 都可以转换为 std::function,或获得它们自己独特的类型,这在接受仿函数的模板化算法中运行良好。

关于c++ - C++0x lambda 和 operator()、闭包和仿函数之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4651463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com