《Effective 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个,那么同样恭喜您,您至少算个合格的高级工程师。

如果您对超过一半都不知所措,那您也该考虑充充电了。

posted @ 2012-02-10 18:30  SolidMango  阅读(4807)  评论(13编辑  收藏  举报