STL(Standard Template Library,標准模板庫)是惠普實驗室開發的一系列軟件的統稱。現然主要出現在C++中,但在被引入C++之前該技術就已經存在了很長的一段時間。
STL的從廣義上講分為三類:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通過迭代器可以進行無縫 地連接。幾乎所有的代碼都采 用了模板類和模板函數的方式,這相比於傳統的由函數和類組成的庫來說提供了更好的代碼重用機會。在C++標准中,STL被組織為下面的13個頭文 件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack> 和<utility>。
使用STL的好處
STL詳細的說六大組件
容器
容器的概念:是數據結構的實現,用來管理一組元素 。
容器的分類:
迭代器
軟件設計有一個基本原則,所有的問題都可以通過引進一個間接層來簡化, 這種簡化在STL中就是用迭代器來完成的。概括來說,迭代器在STL中用來將算法和容器聯系起來,起著一種黏和劑的作用。幾乎STL提供的所有算法都是通 過迭代器存取元素序列進行工作的,每一個容器都定義了其本身所專有的迭代器,用以存取容器中的元素。迭代器部分主要由頭文 件<utility>,<iterator>和<memory>組成。
算法
C++通過模板的機制允許推遲對某些類型的選擇,直到真正想使用模板或者說對模板進行特化的時候,STL就利用了這一點提供了相當多的有用算法。
算法部分主要由頭文件<algorithm>,<numeric>和<functional>組 成。<algorithm>是所有STL頭文件中最大的一個(盡管它很好理解),它是由一大堆模版函數組成的,可以認為每個函數在很大程度上 都是獨立的,其中常用到的功能范圍涉及到比較、交換、查找、遍歷操作、復制、修改、移除、反轉、排序、合並等等。<numeric>體積很 小,只包括幾個在序列上面進行簡單數學運算的模板函數,包括加法和乘法在序列上的一些操作。<functional>中則定義了一些模板類, 用以聲明函數對象。
仿函數
重載函數調用操作符的類,其對象常稱為函數對象(function object),即它們是行為類似函數的對象。一個類對象,表現出一個函數的特征,就是通過“對象名+(參數列表)”的方式使用一個類對象,如果沒有上下文,完全可以把它看作一個函數對待。
用於特化和擴展一元和二元函數對象。
函數適配器可以分為以下四類:
空間適配器
其中主要工作包括兩部分:
文章來源:http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_stl_001.html