20
|
LoudNPossiblyWrong · 技术社区 · 14 年前 |
![]() |
1
41
我认为这与提高语言的表达能力几乎没有关系。 |
![]() |
2
43
好处是编写计算机程序最重要的是: 更容易理解代码 . 我不知道任何性能方面的考虑。 C++在一定程度上允许 函数式编程 . 考虑一下:
问题在于函数(对象)
兰伯斯在所有这些方面都有了很大的进步(也许还有一些我忘记了)。 |
![]() |
3
13
本质上没有性能优势,但是lambda的需求是由于STL及其设计思想的广泛采用。 特别是,STL算法经常使用函数。如果没有lambda,则需要事先声明使用这些函数。lambda使“匿名”函数成为可能。 这一点很重要,因为在许多情况下,您只需要使用一次函数,而不想为它命名有两个原因:您不想污染名称空间,并且在这些特定情况下,您给出的名称要么是模糊的,要么是非常长的。 例如,我使用STL很多,但是没有C++ 0x,我比FraceECHAH()算法和它的表兄弟使用更多的()循环。这是因为,如果我改为使用each(),我需要从循环内部获取代码并为其声明一个函数。另外,在循环之前的所有局部变量都是不可访问的,所以我需要编写额外的代码来将它们作为参数传递给函数构造函数,或者其他等效的东西。因此,我倾向于不为每个()使用,除非有很强的动机,否则代码将更长并且更难读取。 这很糟糕,因为众所周知,使用for each()和类似的算法为编译器和库提供了更多的优化空间,包括自动并行。因此,间接地,lambda将支持更高效的代码。 |
![]() |
4
9
在我看来,lambda最重要的一点是它能将相关的代码紧密地联系在一起。如果您有此代码:
你需要导航到
|
![]() |
5
8
lambda是函子类的语法糖,因此没有,没有计算上的好处。至于动机,可能还有其他十几种流行的语言中的任何一种含有lambda? 有人可能会说它有助于代码的可读性(在使用函数的地方内联声明函数)。 |
![]() |
6
5
虽然我认为C++的其他部分是 more important lambdas不仅仅是C++ 98样式函数对象的“语法糖”,因为它们可以捕获上下文,并且它们这样做。 按名称 然后他们可以把这些上下文放到别处执行。这是新的东西,而不是“编译更快/更慢”的东西。
|
![]() |
7
2
好吧,比较一下:
用这个:
|
![]() |
8
2
“ 一个整洁的发展津贴开放的虐待穷人编码试图看起来酷? “…无论你叫它什么,它都使代码成为 许多 更具可读性和可维护性。它不会提高性能。 通常,程序员迭代一系列元素(搜索元素、累积元素、排序元素等)。使用函数样式,您可以立即看到程序员打算做什么,这与使用for循环不同,因为在循环中,所有的“看起来”都是相同的。 比较算法+lambda:
和旧学校的循环;
(我知道这段代码包含语法错误。) |
![]() |
Sergei · 删除数据框中多个列的列表中的某些元素 2 年前 |