我是linux ,在個人電腦中,vector的代碼位於/usr/include/c++/4.4.4/bits/stl_vector.h, vector.tcclinux
先歸納細節:c++
vector的實現是算法
它在stl_vector.h 中定義了一個數組
_Vector_impl _M_impl;
_Vector_impl的三個對象分別是數組的起始地址_M_start, 結束地址,還有vector容器的結束地址函數
由於有保留內存的存在。因此往vector裏添加數據時,若是還有保留空間。就能夠簡單地將數據放入vector3d
當你試圖去把一個元素插入內存已經滿了的vector時,這個vector會分配具備更多 容量的新內存,從舊內存把它的元素拷貝到新內存,銷燬舊內存裏的元素,回收舊內存。而後它添加插入的元素.code
例如對象
vector 重載了operator[],因此它雖然是一個類,但卻能夠像原生數組同樣的用[]來訪問。如data[3]blog
從這裏也能夠看到,迭代算法中的內存是連續的。內存