[技术| 编程·课件·Linux] [电子书]Effective STL 中文版

20082663 · 发布于 2012-07-06 10:06 · 1294 次阅读
25
本帖最后由 20082663 于 2012-7-6 11:24 编辑

http://ishare.iask.sina.com.cn/f/14255047.html

  你已经熟悉STL了。你知道怎样创建容器、怎样遍历容器中的内容,知道怎样添加和删除元素,以及如何使用常见的算法,比如find和sort。但是你并不满意。你总是感到自己还不能充分地利用STL。本该很简单的任务却并不简单;本该很直接的操作却要么泄漏资源,要么结果不对;本该更有效的过程却需要更多的时间或内存,超出了你的预期。是的,你已经知道如何使用STL了,但是你并不能确定自己是否在有效地使用它。
     
春节期间一次用手机上网无意间发现了这本书,说起来还得感谢智能手机的发展,有时候还是很方便的。当时随便的翻了几页,于是我停不下来了,因为我发现原来我不知道的东西太多了。
我第一次接触STL的时候大约在7年前,那个时候刚从C语言转到C++,记得那个时候知道了STL 的vector, list, map, 但是只是把这些东西当作C++的语法,一带而过,用的时候查查文档,只要逻辑和结果对了就OK,到处是for循环,到处是迭代器,现在回想起来的感触是:… 没文化,真可怕。
第二次我想深入学习STL的时候是研究生毕业以后,记得那个时候刚入行,公司的产品出现了一个问题,是关于STL 的一个容器的erase() 方法调用问题,自己搞了半天才看懂,原来这一个特殊的情况下,这种用法有问题。为了扫清这类问题,我决定深入的学习一下STL。当时找到了一本侯捷翻译的《STL 源码剖析》,说实话,这本书写的真不错,但是他写的有点枯燥,迭代器,分配器… 你没点坚定的毅力说不定就败给他了,我花了一个月的时间(下班后) 才啃完这本书,不敢说100% 扫平,80%还是有的,但是当我读完的时候,我发现这并不是我想要的,我虽然理解了作者要表达的东西,读懂了分配器,迭代器的原理,但是在我的工作中用到的地方并不多。
第三次,也就是这次,当我看到《Effective STL》的时候,我的感触是相见恨晚,做C++开发要是不知道这些东西,显然不够格。其实每种技术都有他自己的特点,都有他自己的取舍,你如果想使用STL就要按照他的方式来玩,我们平时的主官感觉对STL来说并不一定都适用。什么时候用什么容器,什么时候用什么迭代器,什么时候用什么算法,什么时候不该用循环,这本书都做了解答,可以不夸张的说,这本书看过了才能说自己会用STL了。
当然我们要承认,这个世界是有高人的,如果您能正确的回答我下面的几个问题,那估计您不需要读了。
1.       STL 标准序列容器和关联容器都是什么?有什么区别?非标准的呢?
2.       STL 迭代器有几种都有什么区别?
3.       在什么情况下用什么容器?
4.       什么情况下vector可以比map效率高?
5.       如何写一个自己的内存分配器?
6.       如何调整vector的内存容量,节省内存?
7.       如何修改multiset的键?
8.       如何写仿函数类?
如果您不用上网查就都知道答案,那么恭喜您,您是STL大牛。
如果您懂超过5个,那么同样恭喜您,您至少算个合格的高级工程师。
如果您对超过一半都不知所措,那您也该考虑充充电了。
共收到 0 条回复
暂无回复。
回帖
B Color Image Link Quote Code Smilies
Command + Enter
快速回复 返回顶部 返回列表