什么可能是最好的方式开始编程使用提高lambda库。

有帮助吗?

解决方案

剩余的边界内的C++的语言和图书馆,我谨建议第一次获得用于编程使用STL算法函数的模板,作为一个最常见的用途你将有提升::lambda是替换函子类与内联式内联。

图书馆的文件本身给你一个前例的,它是什么有用的:

for_each(a.begin(), a.end(), std::cout << _1 << ' ');

哪里 std::cout << _1 << ' ' 产生一个功能对象,当时所谓的,写入其第一个参数 cout 流。这件事你可以做一个自定义函子类, std::ostream_iterator 或者一个明确的循环,但是提升::lambda胜在简洁和可能清楚的--至少如果你是用于编程功能概念。

当你的(超)使用STL,你会发现自己引力对提高::结合和提升::lambda。它真的很方便的东西,如:

std::sort( c.begin(), c.end(), bind(&Foo::x, _1) < bind(&Foo::x, _2) );

之前你得到这一点,没有这么多。因此,使用STL算法,编写自己的函,然后将其转化为内联式使用的增强::lambda。

从专业的角度来看,我认为最佳的方式开始提升::lambda是得到使用的增强::结合理解和接受。使用占位在提高::结合表达看起来少得多的魔法比"裸体"提升::lambda占位,并认为更容易接受期间代码评论。超越基本的提升::lambda使用是相当有可能得到你的悲伤从你的同事,除非你在出血缘C++的商店。

尽量不要做得过分-没有 时候和地方,在那里一个 for-循环 真的 是正确的解决方案。

其他提示

取决于。您是否已经精通函数式编程概念?如果没有,我建议你从一种专为函数式编程而不是带有功能特性的过程语言开始。如果你不习惯以函数式编码(它不是更难,但它肯定是不同的),那么你将花费更多的时间来对抗语法,而没有足够的时间来学习完成任务。

至于从哪里开始,我在Scheme上削减了功能,但有很多不错的选择。

如果您正在使用合理的最新编译器,则可以使用boost。如果它已经不在您的机器上,请安装它(sudo apt-get install libboost-dev on unbuntu,如果你在windows上,请从boost.org获取二进制文件)。阅读 doc ,然后查看您现有的内容您可能会使用它们的代码。例如,如果使用一小段代码对函数进行参数化,是否有很多代码重复可以消除?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top