当前位置:  开发笔记 > 编程语言 > 正文

在学习BOOST替代方案之前,我是否应该熟练掌握STL库?

如何解决《在学习BOOST替代方案之前,我是否应该熟练掌握STL库?》经验,为你挑选了3个好方法。

在学习C++时将自己限制在STL库中是否有意义,然后在熟练使用vanilla C++之后解决boost及其添加问题?

或者你应该在学习C++的同时潜入BOOST?



1> quark..:

STL有一些核心概念.Boost构建并扩展它们.如果您理解它们,那么直接进入Boost可能对您有用.如果没有,我会从STL开始.

各种容器类型之间的区别(序列如vector,listdeque,和关联,如map,set及其multi*unordered_*品种).有时你可以互换一个 - 有时你不能.了解他们的优势和局限.

迭代器的作用,以及它们如何在容器和算法之间提供桥梁.(这个我发现我一遍又一遍地使用).

为什么有标准算法:他们往往是微量的代码,那么他们为什么存在,可能不是很明显.了解他们与哪些容器,以及如何专门针对他们特定情况下(例如看到通用copy不同于copy专业的const char *).

如何以及何时使用traits类.

如何使用绑定器(bind1st,ptr_funmem_fun):语法可能会模糊它们的实用程序.

如何使用string- 何时使用它.(所有字符串类都有权衡:学习标准的优点和缺点是教育).

流和streambufs之间的区别:如何使用前者进行格式化I/O(尝试从流中读取字符串:它不是应该如此简单),后者用于执行低级快速I/O.

用于设计STL的原则是由Boost库构建和扩展的.如果你得到它们,Boost是可管理的.如果你不这样做,并且Boost最终难以遵循,你可以回到STL来获得你的支持.

(总的来说,Boost确实推动了语言的界限.如果你决定要真正推动自己的C++知识,并测试你是否真的知道你认为自己知道什么,那么它可以提供一个有趣的挑战.我使用过C++十几年来,已经教过其他人如何使用它,从那时起已经熟练掌握了更多高级语言,Boost仍然让我感到惊讶.它非常有用,但它并非无足轻重).



2> postfuturist..:

在看Boost之前,我建议明确处理STL.Boost意味着构建在STL之上,并且许多库最终将成为标准库的一部分.Boost库通常不如STL成熟且标准化程度低.此外,在我看来,许多boost库太过分了,添加了C++中原生不存在的"特性"(导致语法非常疯狂).在许多情况下,有更多理智的C++习语可用于解决大多数编程问题,而无需使用这些神秘的Boost库.


出于好奇 - 你能举出一些"很多案例"的例子,其中存在一个更理智(可移植)的C++习语吗?我只使用了Boost库的一个子集,并且还没有真正发现它的情况.

3> yungchin..:

我认为从一开始就直接使用两者都很好.Boost提供了许多强大的功能,被广泛使用,并且拥有良好的声誉.它提供的大部分内容都与STL设计的通用编程概念相同,因此从这个意义上来说它不应该是非常混乱的.

学习东西的最好方法是使用优秀的代码,然后去看看它是如何编写的.这对Boost来说非常有用.阅读模板教程,您会受到一小时内发现的新功能的启发.然后阅读你曾经使用过的Boost标题,你会受到启发数周.

当然,不要指望立即理解那些内部 - 首先我只是使用了库而不了解你将如何构建任何这些,这很好.但是在某些时候你意识到你想要用类似的设计写一些东西,然后你会去寻找.

如果你反其道而行之,并将自己局限于"C++作为一个更安全的C",那么你就不会接触到所有这些强大的东西,所以你不会那么容易去看和理解它们,所以你会编写相当原始的代码并且学习得更慢.

编辑:忘了我有另一个想法 - 看看即将推出的C++ 0x标准.它结合了许多源自Boost的功能.也就是说,从现在开始学习C++的学生从一开始就会使用这些概念 - 你今天也可以这样做......

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有