我正在学习C++和我正在阅读的书(C++编程语言)说不要重新发明轮子,依靠标准库.在C中,我经常最终创建一个链表,并反复链接列表迭代(也许我做错了不确定),所以C++中可用的容器,字符串和算法的想法真的很吸引我.不过我在网上看过一些,并听到了我的朋友和同事对STL的批评,所以我想我也许会选择一些大脑.
什么是使用STL的最佳实践,以及您从STL学到的经验教训?
有效的C++系列有一本书,名为" Effective STL ".使用标准C++库(neéSTL)学习最佳实践是一个很好的起点.
您可能想要获取"Effective C++:50种改进程序和设计的特定方法(第2版)"的副本:
http://www.amazon.com/Effective-Specific-Addison-Wesley-Professional-Computing/dp/0201924889
我发现它非常宝贵,即使你不是用C++编程,它今天仍然非常重要.
如果你真的想学习C++标准库(包括字符串之类的东西,传统上它们不被视为STL的一部分),你需要一本好书.该领域最好的是Nicolai Jossutis的"C++标准库".
当SC++ L不适合使用时,我能想到的唯一一个例子就是一些罕见的情况,其中没有提供适当的实现(也许你正在处理一些模糊的平台,有限的C++编译器已经实现)或者需要极高的性能(可能是存在于下一代游戏的图形渲染系统核心的代码).
如果您使用的是普通计算机,那么99%肯定您不是第一种情况.至于第二种情况,如果你有好的分析工具的确切证据表明程序中的瓶颈是SC++ L,那么出于性能原因,你绝对应该考虑实现你自己的一组容器和算法.
关于SC++ L的最佳实践是尽可能简单地使用它.此外,几乎所有现代C++代码都大量使用Boost,您可以将其视为SC++ L的优秀和大规模扩展.每当您发现自己想要执行相当标准的算法任务时,您应该使用Google来查看SC++ L或Boost是否提供预先制作,经过测试和验证的设施来完成此任务.