STL原始碼簡述

2021-09-12 21:38:17 字數 973 閱讀 2064

stl是standard template library的簡稱,中文名標準模板庫,惠普實驗室開發的一系列軟體的統稱。

從根本上說,stl是一些「容器」的集合,這些「容器」有list,vector,set,map等,stl也是演算法和其他一些元件的集合。這裡的「容器」和演算法的集合指的是世界上很多聰明人很多年的傑作。stl的目的是標準化元件,這樣就不用重新開發,可以使用現成的元件。stl現在是c++的一部分,因此不用安裝額外的庫檔案。

在c++標準中,stl被組織為下面的13個頭檔案:

其中,stl可以分為六大部分: 容器

容器,就是各種資料結構。從實現角度來看,stl容器就是一種class template。

演算法各種常見的演算法如sort、search、copy、insert、erase等,從實現的角度來看,stl演算法是一種function template。

迭代器迭代器扮演的角色是容器與演算法之間的粘合劑,是所謂的「泛型指標」。一共有五種型別,從實現的角度出發,迭代器是一種將operator*,operator->,operator++,operator–等指標相關操作予以過載的class template。

所有stl容器都附帶有自己專屬的迭代器,只有容器設計者才知道如何設計迭代器。

仿函式行為類函式,可作為演算法的某種策略。從實現的角度看,仿函式是一種過載了operator()的class或class template。一般函式指標可視為狹義的仿函式。

配接器一種用來修飾容器或者仿函式或迭代器介面的東西。比如queue和stack,看著像容器,其實就是deque包了一層皮。

配置器負責空間配置與管理。從實現角度看,配置器是乙個實現了動態空間配置、空間管理、空間釋放額class template。

參考文章:

面試題總結(三)、《stl原始碼剖析》相關面試題總結

STL 原始碼閱讀

1 這裡可以看出來,容器將迭代器作為類成員。vectora iteratorite a.begin 容器的成員函式可以返回迭代器,所以迭代器是容器的成員物件。2 個人理解,迭代器是對指標的封裝和提公升,盡可能遮蔽資料結構的底層細節,對外提供統一的操作介面,這些介面跟普通指標的功能類似,比如自增或自減...

STL原始碼剖析

這兩天略讀完了 stl原始碼剖析 之所以是略讀,就是只看大體,不講具現 這個詞在 深度探析c 物件模型 中比較多 已經看過好幾本c 的書了,感覺c 本身設計的博大精深,而c 編譯器就更是乙個神奇的東西,換句話說,你永遠不知道c 編譯器揹著你做了哪些出乎你意料的事 不扯遠了 我主要是想看stl容器的具...

STL原始碼剖析

這兩天略讀完了 stl原始碼剖析 之所以是略讀,就是只看大體,不講具現 這個詞在 深度探析c 物件模型 中比較多 已經看過好幾本c 的書了,感覺c 本身設計的博大精深,而c 編譯器就更是乙個神奇的東西,換句話說,你永遠不知道c 編譯器揹著你做了哪些出乎你意料的事 不扯遠了 我主要是想看stl容器的具...