vector 表示一段連續的內存區域每個元素被順序存儲在這段內存中
對vector 的隨機訪問比如先訪問元素5 然后訪問15 然后再訪問7 等等效率很高
因為每次訪問離vector起始處的位移都是固定的
但是在任意位置而不是在vector 末尾插人元素則效率很低因為它需要把待插入元素右邊的每個元素都拷貝一遍類似地刪除任意一個而不是vector的最后一個元素效率同樣很低因為待刪除元素右邊的每個元素都必須被復制一遍這種代價對于大型的復雜的類對象來說尤其大
一個deque 也表示一段連續的內存區域但
是與vector 不同的是它支持高效地在其首部插入和刪除元素它通過兩級數組結構來實
現一級表示實際的容器第二級指向容器的首和尾
list 表示非連續的內存區域并通過一對指向首尾元素的指針雙向鏈接起來從而允許
向前和向后兩個方向進行遍歷在list 的任意位置插入和刪除元素的效率都很高指針必須
被重新賦值但是不需要用拷貝元素來實現移動另一方面它對隨機訪問的支持并不好
訪問一個元素需要遍歷中間的元素另外每個元素還有兩個指針的額外空間開銷
下面是選擇順序容器類型的一些準則
如果我們需要隨機訪問一個容器則vector 要比list 好得多
如果我們已知要存儲元素的個數則vector 又是一個比list 好的選擇
如果我們需要的不只是在容器兩端插入和刪除元素則list 顯然要比vector 好
除非我們需要在容器首部插入和刪除元素否則vector 要比deque 好