天天看點

STL向量(vector)

1.接口與實作

1.1

抽象資料類型:一組資料模型上定義的一組操作    資料類型是(char、int等)

資料結構:基于特定語言的,實作ADT的一整套算法。

1.2

向量:向量是數組的抽象與泛化,由一組元素按線性次序封裝而成。

特點:1.各元素與(0,n)内的秩一一對以應

   2.元素的類型不限于基本類型

   3.操作、管理更加簡潔、統一與安全

   4.可更為便捷的參與複雜資料結構的定制與實作

1.3

向量的操作

insert(0,9):在0的位置插入9

put(1,2)修改1位置上的元素為2

get(2)擷取2上的元素

remove(2)移除位置2上的元素并傳回

size()向量裡面元素的個數

disordered()判斷向量裡面無序的資料對

find(5)找有沒有5的元素 找到傳回其下标 未找到則傳回-1

sort()對裡面的元素進行排序

search(9)查找向量裡面是否有9找到則傳回下标,未找到則傳回不超過9的最大的那個元素的下表(順序的向量)

uniquify()剔除掉向量裡面重複的元素

2.可擴充向量

2.1 靜态空間管理

開辟内部數組_elem[]并使用一段連續的實體空間

缺點:

會産生上溢合下溢

2.2 動态空間管理

在即将發生上溢時适當的擴大數組的容量

2.3 擴容的策咯

容量遞增政策(2 4 6 8 10 12)累計增容費時間(O(n2))  分攤增容時間(O(n))

加倍試政策(2 4 8 16)累計增容費時間(O(n))  分攤增容時間(O(1))

2.4 分攤複雜度

平均複雜度:根據資料結構各種操作出現的機率分布,将對應的成本權重平均

分攤談複雜度:對資料結構連續的實施足夠多次操作,所需總體成本分攤至單次操作