什么是使用boost lambda库开始编程的最佳方法。C++ boost lambda库
回答
在C++语言和库的边界内,我建议首先习惯使用STL算法函数模板进行编程,因为boost :: lambda最常用的用法是用内联替换函子类表达式内嵌。
库文件本身给你的是没有什么的先期例如:
for_each(a.begin(), a.end(), std::cout << _1 << ' ');
其中std::cout << _1 << ' '
产生一个函数对象,调用它时,它的第一个参数写入到cout
流。这是你可以用自定义的函数类,std::ostream_iterator
或显式循环来做的事情,但boost :: lambda在简洁性和可能的清晰度方面胜出 - 至少如果你习惯了函数式编程概念。
当你(过度)使用STL时,你会发现你对boost :: bind和boost :: lambda感兴趣。它在如下方面非常方便:
std::sort(c.begin(), c.end(), bind(&Foo::x, _1) < bind(&Foo::x, _2));
在你达到那一点之前,不是那么多。因此,使用STL算法,编写你自己的函子,然后使用boost :: lambda将它们转换为内联表达式。
从专业的角度来看,我相信开始使用boost :: lambda的最好方法是获得boost :: bind的理解和接受。在boost :: bind表达式中占位符的使用与“裸”boost :: lambda占位符相比看起来更不可思议,并且在代码审阅期间更容易被接受。超越基本boost :: lambda的使用很可能会让你的同事感到悲伤,除非你是在一个流血的C++商店。
尽量不要走极端 - 有是时候和地方,一个for
-loop 真的是正确的解决方案。
取决于。你是否已经很熟悉函数式编程概念?如果不是的话,我建议你从一种专为函数式编程设计的语言开始,而不是一种具有功能特性的过程语言。如果你不习惯以功能性风格进行编码(它不一定必须是10,但它绝对不同),那么你会花更多的时间来对付语法,没有足够的时间学习完成任务。
至于从哪里开始,我在计划上削减了功能性牙齿,但有很多不错的选择。
如果您正在使用合理的最新编译器,则可以使用boost。如果它不在你的机器上,请安装它(sudo apt-get在unbuntu上安装libboost-dev,如果你在windows上,则从boost.org获取二进制文件)。请阅读doc,然后查看您现有的代码,了解可能使用它们的情况。例如,如果您使用一小段代码对函数进行参数化,您是否有许多代码可以被删除?
- 1. boost :: lambda with boost :: thread
- 2. C++ 0x lambda + boost :: function trouble
- 3. Boost lambda递归?
- 4. lambda表达式替换 - Boost库
- 5. boost :: lambda std :: map
- 6. C++ Boost库geometry.hpp
- 7. 与Boost C++库
- 8. boost转换迭代器和c + + 11 lambda
- 9. Phoenix中的C++ boost :: lambda :: ret等效
- 10. C++ boost :: bind/lambda和运算符bool()
- 11. boost lambda的用法
- 12. C++:如何使用std :: less <int> with boost :: bind和boost :: lambda?
- 13. Boost C++库安装
- 14. Xcode 7.11 Brew Boost C++库,Boost comple错误
- 15. Boost MPL占位符和Lambda
- 16. Boost函数和提升lambda
- 17. boost :: lambda :: ll在哪里?
- 18. Boost C++库版本号
- 19. BOOST库的问题C++
- 20. C++线程与Boost库
- 21. C++ Boost图库 - Dijkstra示例
- 22. AWS Lambda Python libssl C库
- 23. Boost Lambda/Phoenix - 如何做lambda返回另一个lambda?
- 24. Boost lambda:对象的调用方法
- 25. 与C++ 11 lambda表达式
- 26. 'this'pointer in C++ 11 lambda
- 27. Boost库问题
- 28. 错误Boost库
- 29. C++ lambda自传异常
- 30. C++:使用boost lambda在std :: tr1 :: unordered_map中获取最大值
如果您已经熟悉C风格的语法,那么就功能语言而言,我会推荐Erlang--它是一种更为熟悉的语法,其总体结构相似,因此您花费的时间更少,编程时间更多。 – coppro 2008-09-25 17:58:28