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