《STL原始碼剖析》 -- 寫在最後

凝霜發表於2011-08-04

《STL原始碼剖析》系列文章經過一個星期的連載在今天就正式結束了,我將大部分STL關鍵的部分都進行了註釋。

這個系列文章後期寫的比較簡略,這是因為如果你看過前面的文章,再看後面的原始碼會非常輕鬆。

這個系列有幾篇文章我要特別推薦一下:

<stl_config.h>:由於我剖析的版本比較老,那個時候很多編譯器對C++標準支援不到位,所以會用很多相容的技巧。

在學習STL原始碼的時候,首先要了解這個檔案中的定義,後面才能輕鬆應付一些條件編譯。

<stl_alloc.h>:SGI STL為了防止記憶體碎片,在allocator實現部分使用了記憶體池,當然,如果編譯器支援不夠,

還有一個簡單包裝的<defalloc.h>:這個記憶體池構建的十分精巧,非常值得我們去深入學習。

<stl_uninitilized.h>:SGI STL為了效率,在構建一系列物件的時候並不是依次呼叫建構函式,

而是先構建一個物件,然後進行物件的拷貝,這個值得注意。

<stl_iterator.h>:迭代器的重要性不需要多說,這個是STL將演算法和容器結合的粘合劑。

<stl_vector.h>:這個就是動態陣列,STL容器使用的技術在這裡面我都註釋的差不多了,

看完這個再看其它容器會很輕鬆。另外我的序列式容器寫的比較詳細,關聯式容器寫的比較簡略,

主要思想都是一樣的,所以後面寫的文章都是簡單註釋。

有了上面幾個檔案的基礎,你再看其餘檔案就會非常快,看註釋有的時候反而成了一種負擔。

下一步的寫作計劃是網路程式設計,我準備把《TCP/IP詳解》三卷讀完,這期間會寫一些具體的例項,

同時也會閱讀一下C++0x有什麼值得關注的變化,也會寫一些文章。STL方面會寫一些慣用法背後的思想及實現。

下學期就大三了,還要進行ACM集訓,更新速度可能是一週一篇。為了鍛鍊一下閱讀能力,

不定期會翻譯些有價值的文章給大家分享。

相關文章