經典書籍比較多,其中最經典的就是《C++標準程序庫:自修教程與參考手冊》。算法
一、《C++標準程序庫:自修教程與參考手冊》編程
這本書做爲學習STL的第一本書是絕對適合的,一開始就會有C++語言的必備知識,以避免你一頭扎進STL中直接淹死。數組
《The C++ Standard Library》(中文版《C++ 標準程序庫》)不只對每個程序庫組件提供範圍普遍的說明,也對繁雜的感念提供清楚明亮的解釋,並描述高效運用這些組件時須要的實際編程細節,提出一個又一個的範例程序。
這本包含最新資料的完整書籍,反映出被 ANSI/ISO C++ 語言標準規格書歸入的 C++ 標準程序庫的結構。更明確地說,本書將焦點放在標準模板庫(Standard Template Library)身上,檢驗其中的容器(containers)、迭代器(iterators)、仿函數(functors)和算法(algorithms)。數據結構
你還能夠找到特殊容器、字符串(strings)、數值類別、國際化議題、IOStream。每個組件都有深入的呈現,包括其介紹、設計、運用實例、細部解說、陷阱、意想不到的危險,以及相關類別和函數的確切標記(signature)和定義。框架
一份看法深入的基礎概念介紹和一個程序庫綜合鳥瞰,會對新手帶來快速的提高。 ide
二、《Effective STL 中文版: 50條有效使用STL的經驗》函數
說到Scott Meyers的大名,C++程序員應該是無人不知無人不曉,他開創性的寫了兩本C++鉅著《Effective C++》和《More Effective C++》都是每個C++程序員必備書籍。學習
這本書天然也不例外,其中講解了50條容易將C++程序員引入歧途的錯誤案例和正確修正使用方法。每個使用STL的程序員都必備該書。ui
三、《STL源碼剖析》
侯捷先生出品的書籍,通常品質都有所保證。這也是侯捷先生本身原創的一本書,這本書主要是深刻到SGI版本的STL實現中,將STL的代碼抽絲剝繭,將最鮮血淋漓的那部分取出來給你們指導清除。閱讀這本書。
學習STL是次要的,學習數據結構是次要的,主要是要學習侯捷先生治學的精神和分析源代碼的方式方法,這纔是最重要的。這本書一再印刷,銷量已經證實了一切。各大圖書商城有售。
四、《STL擴展技術手冊(卷1):集合和迭代器》
相信一大羣讀者沒有據說過這本書,可是這本書也是很是值得推薦的一本STL書籍,這本書既不是教你STL怎麼用,也不是教你STL的實現是怎麼樣的,而是教你如何擴展你本身的STL組件。基本上是國內C++圖書界中惟一一本講解STL擴展的專著。
做者以前寫過一本《Imperfact C++》的書,這本書不知道爲何在國內的銷量也很差,可是該做者的C++技術造詣很是深厚,他的著做也是每個想要深刻學習C++的讀者所必讀的書籍。做者原本打算將STL 擴展技術手冊分爲1,2兩卷出版,惋惜第一卷出版後,第二卷再也出不來了。
五、介紹
STL(StandardTemplate Library),即標準模板庫,是一個具備工業強度的,高效的C++程序庫。它被容納於C++標準程序庫(C++Standard Library)中,是ANSI/ISOC++標準中最新的也是極具革命性的一部分。
該庫包含了諸多在計算機科學領域裏所經常使用的基本數據結構和基本算法。爲廣大C++程序員們提供了一個可擴展的應用框架,高度體現了軟件的可複用性。
從邏輯層次來看,在STL中體現了泛型化程序設計的思想(genericprogramming),引入了諸多新的名詞,好比像需求(requirements),概念(concept),模型(model),容器(container),算法(algorithmn),迭代子(iterator)等。
與OOP(object-orientedprogramming)中的多態(polymorphism)同樣,泛型也是一種軟件的複用技術;
從實現層次看,整個STL是以一種類型參數化(typeparameterized)的方式實現的,這種方式基於一個在早先C++標準中沒有出現的語言特性--模板(template)。
若是查閱任何一個版本的STL源代碼,你就會發現,模板做爲構成整個STL的基石是一件千真萬確的事情。除此以外,還有許多C++的新特性爲STL的實現提供了方便;
六、STL的六大組件
· 容器(Container),是一種數據結構,如list,vector,和deques ,以模板類的方法提供。爲了訪問容器中的數據,可使用由容器類輸出的迭代器;
· 迭代器(Iterator),提供了訪問容器中對象的方法。例如,可使用一對迭代器指定list或vector中的必定範圍的對象。迭代器就如同一個指針。事實上,C++的指針也是一種迭代器。可是,迭代器也能夠是那些定義了operator*()以及其餘相似於指針的操做符地方法的類對象;
· 算法(Algorithm),是用來操做容器中的數據的模板函數。例如,STL用sort()來對一個vector中的數據進行排序,用find()來搜索一個list中的對象,函數自己與他們操做的數據的結構和類型無關,所以他們能夠在從簡單數組到高度複雜容器的任何數據結構上使用;
· 仿函數(Function object,仿函數(functor)又稱之爲函數對象(functionobject),其實就是重載了()操做符的struct,沒有什麼特別的地方
· 迭代適配器(Adaptor)
· 空間配製器(allocator)其中主要工做包括兩部分:對象的建立與銷燬和內存的獲取與釋放