淺談STL中的容器

淺談STL中的容器

首先談談Vector,我的理解就是動態數組。在存儲區域上是連續的。因此可以隨機訪問,比如說可以直接訪問迭代器it+5這樣的元素。它在尾位置處插入元素速度很快,但是在任意位置插入元素速度很慢,因爲需要把待插入的元素右邊的每個元素都拷貝一遍。類似地刪除任意一個而不是vector 的最後一個元素效率同樣很低。因爲待刪除元素右邊的每個元素都必須被複制一遍這種代價對於大型的複雜的類對象來說尤其大。

 

deque,一個deque 也表示一段連續的內存區域但是與vector不同的是它支持高效地在其首部插入和刪除元素它通過兩級數組結構來實現一級表示實際的容器第二級指向容器的首和尾

list 表示非連續的內存區域並通過一對指向首尾元素的指針雙向鏈接起來從而允許向前和向後兩個方向進行遍歷在list的任意位置插入和刪除元素的效率都很高

指針必須被重新賦值但是不需要用拷貝元素來實現移動。另一方面它對隨機訪問的支持並不好,訪問一個元素需要遍歷中間的元素另外每個元素還有兩個指針的額外空間開銷 

 

對於一些關聯容器

例如set。需要是唯一的。並且能夠根據某個key進行排序,也可以根據key進行搜索,速度非常的快。

    map與set的區別是存儲的是一對數值包括key,value。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章