1. 程式人生 > >STL學習總結

STL學習總結

C++標準模板庫

C++ Standard Template Libarary

STL元件

容器(Container)——管理某類物件的集合

迭代器(Iterator)——在物件集合上進行遍歷

演算法(Algorithm)——處理集合內的元素

容器介面卡(container adapter)

函式物件(functor)


STL容器元素的條件

1.必須能夠通過拷貝建構函式進行復制

2.必須能夠通過賦值運算子完成賦值操作

3.必須能夠通過解構函式完成銷燬工作

4.序列式容器元素的預設建構函式必須可用

5.默寫動作必須定義operator==,例如搜尋操作

6.關聯式容器必須定義出排序準則,預設情況下是過載operator<

對於基本資料型別(int,long,char,double,...)而言,以上條件總是滿足

STL容器的共同操作

1.賦值(assignment)和交換(swap)

(swap)用於提高賦值操作效率

2.與迭代器(iterator)相關的操作

begin()——返回一個迭代器,指向第一個元素

endl()——返回一個迭代器,指向最後一個元素之後

rebegin()——返回一個逆向迭代器,指向逆向遍歷的第一個元素

rend()——返回一個逆向迭代器,指向逆向遍歷的最後一個元素之後

3.元素操作

insert(pos,e)——將元素e的拷貝安插於迭代器pos所指的位置

erase(beg,end)——移除[beg,end]區間內的所有元素

clear()——移除所有元素

vector

1.vector模擬動態陣列

2.vector的元素可以是任意型別T,但必須具備賦值和拷貝能力(具有public拷貝建構函式和過載的賦值操作符)

3.必須包含的標頭檔案#include<vector>

4.vector支援隨機儲存

5.vector的大小(size)和容量(capacity)

size返回實際元素個數

capacity返回vector能容納的元素最大數量。如果插入元素時,元素個數超過capacity,需要重新配置內部儲存器。

map/multimap

1.使用平衡二叉樹管理元素

2.元素包含兩部分(key,value),key和value可以是任意型別

3.根據元素的key自動對元素排序,因此根據元素的key