1. 程式人生 > >STL原始碼學習總結及專案下載地址

STL原始碼學習總結及專案下載地址

        從開始看STL原始碼到今天差不多有一個月的時間了,在這研讀STL原始碼過程中確實學習到了很多,深深被大師們的設計思想所打動。其中使用迭代器的思想是其STL的最大的亮點,通過泛型程式設計,是得所有的容器對外都提供統一的訪問介面,而遮蔽掉了各個容器底層實現的細節。相對了面向物件的程式設計,泛型程式設計同樣能夠實現多型的功能,而且還具有更高的安全性以及效率,因為泛型程式設計就是編譯期間就已經決定了變數的型別。

        其次,給我印象最深刻的就是分層架構,和網路的七層協議一樣,下面的模組為上面的模組提供服務,為上層提供一個介面即可,不用去計較下層是怎麼實現的。例如:在STL中所有的容器都是會需要獲取記憶體,釋放記憶體。在我們日常程式設計中一般使用new和delete,但是在STL中為了高效,所以,尤其專門的空間配置器。在空間配置中,它專門處理如何高效的使用記憶體,然後對外提供介面。所有的容器都只是去使用這個介面來獲取記憶體,而根本不用去管怎麼獲得記憶體的。

      在學習STL原始碼過程,我萌發想自己動手去實現STL中容器的想法,於是,也動手去寫了一下程式碼,也初步達到了預期的目的,所有的程式碼,在前面也文章中也粘貼出來了。但是,在寫的過程中,難免會修改前面所寫的,重新構建其架構,使其更加完善。因此,我決定把專案的最終版放網上供大家相互學習。

      在這個STL仿寫的專案中,我使用的是code:blocks編譯器,使用這個編譯器,下載後可以直接執行。其功能有:我們實現了空間配置器,迭代器,Vector,list,deque,set,map五大容器的實現,其實還有stack,queue,prority_queue沒有實現,這幾個介面卡都是以前面的容器為基礎實現的,還有hash_map,hash_set也沒有實現,這個等以後有時間了在寫把,寫完也會放在部落格裡的~