《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個,那么同樣恭喜您,您至少算個合格的高級工程師。

如果您對超過一半都不知所措,那您也該考慮充充電了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM