deque與vector的區別

2021-08-28 06:30:29 字數 311 閱讀 8099

申明儲存空間之後,第乙個元素的位址一直是恆定的,新增元素是只能向後生長,push_front()操作需要將所有的元素向後移動一片空間。

vector被定義之後一般會有乙個預定的空間capacity(),空間不夠的時候才會去申請新的空間

deque在定義儲存空間之後,沒有預設的空間大小,是在元素新增的時候實時擴充空間的,所以沒有capacity()函式;

至於叫雙端的是因為deque在執行push_front()的時候,確實是在第乙個元素的前面開闢了空間,沒有移動任何元素,所以是雙端的,這種方式在首端和尾端插入元素是非常快的。

deque實現原理.

deque用法 和與vector的區別

deque是雙向開口的連續性儲存空間。雖說是連續性儲存空間,但這種連續性只是表面上的,實際上它的記憶體是動態分配的,它在堆上分配了一塊一塊的動態儲存區,每一塊動態儲存去本身是連續的,deque 自身的機制把這一塊一塊的儲存區虛擬地連在一起。它首次插入乙個元素,缺省會動態分配512 位元組空間,當這 ...

vector與 list與 deque的比較

vector表示一段連續的記憶體區域每個元素被順序儲存在這段記憶體中對vector的隨機 訪問比如先訪問元素5 然後訪問15 然後再訪問7 等等效率很高因為每次訪問離vector 起始處的位移都是固定的但是在任意位置而不是在vector末尾插人元素則效率很低 因為它需要把待插入元素右邊的每個元素都拷...

vector與list與deque比較

vector 表示一段連續的記憶體區域每個元素被順序儲存在這段記憶體中對vector 的隨機 訪問比如先訪問元素5 然後訪問15 然後再訪問7 等等效率很高因為每次訪問離vector 起始處的位移都是固定的但是在任意位置而不是在vector 末尾插人元素則效率很低 因為它需要把待插入元素右邊的每個元...