STL源碼初步接觸
STL = Standard Template Library,直譯過(guò)來(lái)是:標(biāo)準(zhǔn)模板庫(kù),是惠普實(shí)驗(yàn)室開(kāi)發(fā)的一系列軟件的統(tǒng)稱。從根本上說(shuō),STL是一些“容器”的集合,這些“容器”有l(wèi)ist,vector,set,map等,STL也是算法和其他一些組件的集合。這里的“容器”和算法的集合指的是世界上很多聰明人很多年的杰作。STL的目的是標(biāo)準(zhǔn)化組件,這樣就不用重新開(kāi)發(fā),可以使用現(xiàn)成的組件。STL現(xiàn)在是C++的一部分,因此不用額外安裝什么。STL所實(shí)現(xiàn)的,是依據(jù)泛型思維架設(shè)起來(lái)的一個(gè)概念結(jié)構(gòu)。說(shuō)了這么多還是不知道STL是個(gè)什么東東,今天只是初接觸這個(gè)概念,感覺(jué)很高深的樣子,先這樣理解吧,STL就是一個(gè)倉(cāng)庫(kù),一個(gè)存放各種工具的倉(cāng)庫(kù)。它的工具分為六大類(六大組件) :
容器(containers):各種數(shù)據(jù)結(jié)構(gòu),如Vector,list,deque,set,map,用來(lái)存放底層數(shù)據(jù)。一般有序列式(下面要寫的Vector就是個(gè)這種)、關(guān)聯(lián)式等。
算法(algorithms):各種常用算法如:sort,search,copy,erase……
迭代器(iterator):扮演容器與算法之間的膠合劑,是所謂的“泛型指針”,共5種類型,以及他們的衍生變化。所有的STL容器都附帶有自己專屬的迭代器。原生指針也是一種迭代器。
仿函數(shù)(functor):行為類似函數(shù)可作為算法的某種策略。一般函數(shù)指針可認(rèn)為是俠義的仿函數(shù)。
配接器(adapter):一種用來(lái)修飾容器,或仿函數(shù),或迭代器接口的東西。
配置器(allocators)負(fù)責(zé)空間配置與管理。配置器是一個(gè)實(shí)現(xiàn)了動(dòng)態(tài)空間配置、空間管理、空間釋放的class template。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26
