STL源碼初步接觸
STL = Standard Template Library,直譯過來是:標(biāo)準(zhǔn)模板庫,是惠普實驗室開發(fā)的一系列軟件的統(tǒng)稱。從根本上說,STL是一些“容器”的集合,這些“容器”有l(wèi)ist,vector,set,map等,STL也是算法和其他一些組件的集合。這里的“容器”和算法的集合指的是世界上很多聰明人很多年的杰作。STL的目的是標(biāo)準(zhǔn)化組件,這樣就不用重新開發(fā),可以使用現(xiàn)成的組件。STL現(xiàn)在是C++的一部分,因此不用額外安裝什么。STL所實現(xiàn)的,是依據(jù)泛型思維架設(shè)起來的一個概念結(jié)構(gòu)。說了這么多還是不知道STL是個什么東東,今天只是初接觸這個概念,感覺很高深的樣子,先這樣理解吧,STL就是一個倉庫,一個存放各種工具的倉庫。它的工具分為六大類(六大組件) :
容器(containers):各種數(shù)據(jù)結(jié)構(gòu),如Vector,list,deque,set,map,用來存放底層數(shù)據(jù)。一般有序列式(下面要寫的Vector就是個這種)、關(guān)聯(lián)式等。
算法(algorithms):各種常用算法如:sort,search,copy,erase……
迭代器(iterator):扮演容器與算法之間的膠合劑,是所謂的“泛型指針”,共5種類型,以及他們的衍生變化。所有的STL容器都附帶有自己專屬的迭代器。原生指針也是一種迭代器。
仿函數(shù)(functor):行為類似函數(shù)可作為算法的某種策略。一般函數(shù)指針可認(rèn)為是俠義的仿函數(shù)。
配接器(adapter):一種用來修飾容器,或仿函數(shù),或迭代器接口的東西。
配置器(allocators)負(fù)責(zé)空間配置與管理。配置器是一個實現(xiàn)了動態(tài)空間配置、空間管理、空間釋放的class template。