一般介紹
STL(Standard TemplateLibrary),即標準模板庫,是一個具有工業強度的,高效的C++程式庫,它被容納于C++標準程式庫(C++ Standard
Library)中,是ANSI/ISOC++標準中最新的也是極具革命性的一部分,該庫包含了諸多在計算機科學領域里所常用的基本資料結構和基本演算法,為廣大C++程式員們提供了一個可擴展的應用框架,高度體現了軟體的可復用性,
從邏輯層次來看,在STL中體現了泛型化程式設計的思想(generic programming),引入了諸多新的名詞,比如像需求(requirements),概念(concept),模型(model),容器(container),演算法(algorithmn),迭代子(iterator)等,與OOP(object-oriented programming)中的多型(polymorphism)一樣,泛型也是一種軟體的復用技術;
從實作層次看,整個STL是以一種型別引數化(type parameterized)的方式實作的,這種方式基于一個在早先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)又稱之為函式物件(function
object),其實就是多載了()運算子的struct,沒有什么特別的地方
迭代配接器(Adaptor)一種用來修飾容器或者仿函式或迭代器介面的東西,
空間配制器(allocator)其中主要作業包括兩部分1.物件的創建與銷毀 2.記憶體的獲取與釋放
筆記目錄
- [STL]String基本用法解釋+代碼實體
- [STL]Vertor基本用法解釋+代碼實體
- [STL]deque基本用法及和Vertor的對比
- [STL]stack和queue基本API用法及比對
- [STL]list基本用法解釋
- [STL]set/multiset常見用法實體+pair對組概念
- [STL]map/multimap基本用法及自定義排序
- [STL]深拷貝和淺拷貝問題(記憶體泄露+記憶體未釋放+呼叫拷貝構造的五種情況)
- [STL]容器小結+函式物件+謂詞+內建函式物件+函式物件配置器+演算法(匯總)
參考資源
1 黑馬程式員
2 《C++標準庫 - 侯捷》中的 5.2 節-容器
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/271529.html
標籤:其他
