在学习C++时将自己限制在STL库中是否有意义,然后在熟练使用vanilla C++之后解决boost及其添加问题?
或者你应该在学习C++的同时潜入BOOST?
qua*_*ark 42
STL有一些核心概念.Boost构建并扩展它们.如果您理解它们,那么直接进入Boost可能对您有用.如果没有,我会从STL开始.
vector,list和deque,和关联,如map,set及其multi*和unordered_*品种).有时你可以互换一个 - 有时你不能.了解他们的优势和局限.copy不同于copy专业的const char *).bind1st,ptr_fun和mem_fun):语法可能会模糊它们的实用程序.string- 何时不使用它.(所有字符串类都有权衡:学习标准的优点和缺点是教育).用于设计STL的原则是由Boost库构建和扩展的.如果你得到它们,Boost是可管理的.如果你不这样做,并且Boost最终难以遵循,你可以回到STL来获得你的支持.
(总的来说,Boost确实推动了语言的界限.如果你决定要真正推动自己的C++知识,并测试你是否真的知道你认为自己知道什么,那么它可以提供一个有趣的挑战.我使用过C++十几年来,已经教过其他人如何使用它,从那时起已经熟练掌握了更多高级语言,Boost仍然让我感到惊讶.它非常有用,但它并非无足轻重).
pos*_*ist 11
在看Boost之前,我建议明确处理STL.Boost意味着构建在STL之上,并且许多库最终将成为标准库的一部分.Boost库通常不如STL成熟且标准化程度低.此外,在我看来,许多boost库太过分了,添加了C++中原生不存在的"特性"(导致语法非常疯狂).在许多情况下,有更多理智的C++习语可用于解决大多数编程问题,而无需使用这些神秘的Boost库.
我认为从一开始就直接使用两者都很好.Boost提供了许多强大的功能,被广泛使用,并且拥有良好的声誉.它提供的大部分内容都与STL设计的通用编程概念相同,因此从这个意义上来说它不应该是非常混乱的.
学习东西的最好方法是使用优秀的代码,然后去看看它是如何编写的.这对Boost来说非常有用.阅读模板教程,您会受到一小时内发现的新功能的启发.然后阅读你曾经使用过的Boost标题,你会受到启发数周.
当然,不要指望立即理解那些内部 - 首先我只是使用了库而不了解你将如何构建任何这些,这很好.但是在某些时候你意识到你想要用类似的设计写一些东西,然后你会去寻找.
如果你反其道而行之,并将自己局限于"C++作为一个更安全的C",那么你就不会接触到所有这些强大的东西,所以你不会那么容易去看和理解它们,所以你会编写相当原始的代码并且学习得更慢.
编辑:忘了我有另一个想法 - 看看即将推出的C++ 0x标准.它结合了许多源自Boost的功能.也就是说,从现在开始学习C++的学生从一开始就会使用这些概念 - 你今天也可以这样做......
| 归档时间: |
|
| 查看次数: |
9065 次 |
| 最近记录: |