STL(standard template library)提供了一組表示容器,迭代器,函數對象和算法的模板。容器是一個與數組相似的單元,能夠存若干個值。 node
STL容器是同質的,即存儲的值的類型相同;算法是完成特定任務的處方;迭代器是可以用來遍歷容器的對象,與可以遍歷數組的指針相似,是廣義指針;函數對象是相似於函數的對象,能夠是類對象或函數指針(包括函數名,由於函數名被用做指針)。 算法
STL不是面向對象編程,而是一種不一樣的編程模式-通用編程模式(generic programming)。 編程
1. 慎重選擇容器類型 數組
基於算法複雜性考慮: 數據結構
vector是默認應使用的序列類型;當須要頻繁地在序列中間作插入和刪除操做時,應使用list;當大多數插入和刪除操做發生在序列的頭部和尾部時,deque是應考慮的數據結構。 函數
STL一種分類方法:連續內存容器(contiguous-memory container)和 基於節點的容器(node-based container)。 spa
2. vector 指針
vector是一個可以存聽任意類型的動態數組,可以增長和壓縮數據。 對象
使用說明: 索引
使用vector前,必須包含頭文件<vector>
例: vector<int> vec;
操做:vec.size() //容器實際數據的個數
vec.begin()//指向迭代器中的第一個數據地址
vec.capacity() //返回容器中數據的個數
vec.empty() //判斷容器是否爲空
vec.front() //返回第一個數據
vec.push_back(element) //在尾部加入一個元素
vec.pop_back(element) //刪除最後一個數據
vec.end() //指向迭代器中末端的下一個,指向不存在元素
3. deque
是一種具備隊列和棧的性質的數據結構。
4. list
5. iterator
iterator(迭代器) 是一種對象,它可以用愛遍歷標準模板庫容器中的部分或所有元素,每一個迭代器對象表明容器中的肯定地址。迭代器修改了常規指針的接口。
6. 容器的共通能力
全部容器提供都是value語義,而非reference。容器執行插入元素的操做時,內部實施拷貝動做。因此STL容器內存儲的元素必須可以被拷貝(必須提供拷貝構造函數)。
每一個容器都提供可返回迭代器的函數,運用返回的迭代器就能夠訪問元素。
一般STL不會丟出異常。要求使用運行者對確保傳入正確的參數。
7. 容器的共通操做
1) 與大小相關的操做函數
c.size() 傳回容器中的元素數量
c.empty() 判斷容器是否爲空
c.max_size() 傳回元素最大可能數量
2)返回迭代器的函數
c.begin()
c.end()
c.rbegin() 返回一個逆向迭代器,指向逆向尋訪時的第一元素
c.rend()