C 中vector和list區別

2021-09-13 09:01:47 字數 568 閱讀 3298

記憶體空間:vector和陣列類似,記憶體空間是連續的,並且其實位址不變;list是由雙向鍊錶實現的,記憶體空間是不連續的。

訪問:vector能夠進行高效的隨機訪問操作,時間複雜度為o(1);list是通過指標訪問資料,不能進行隨機訪問,時間複雜度是o(n)。

插入/刪除:vector因位址時連續的,進行插入和刪除操作時會進行記憶體塊的拷貝複製,時間複雜度是o(n);list是非連續的儲存結構可以進行快速的插入和刪除操作。

儲存結構:vector是連續的儲存結構,是可以實現動態增長的物件陣列,支援對陣列的高效訪問和在陣列尾部快速的插入和刪除,在中間和頭部刪除比較不易,需要移動大量的資料;list是非連續的儲存結構,是雙鏈表結構,支援鍊錶的雙向遍歷。每個節點包含元素本身,前驅和後繼,因此可以進行高效的訪問和插入刪除操作。

vector是雙向的,list而是單向的,vector的迭代器使用後就失效了,list的迭代器不會 失效。

vector可以實現容量的動態增長,vs預設增長1.5倍,gcc預設增加為原來2倍。

C 中vector和list的區別

1.vector資料結構 vector和陣列類似,擁有一段連續的記憶體空間,並且起始位址不變。因此能高效的進行隨機訪問,時間複雜度為o 1 但因為記憶體空間是連續的,所以在進行插入和刪除操作時,會造成記憶體塊的拷貝,時間複雜度為o n 另外,當陣列中記憶體空間不夠時,會重新申請一塊記憶體空間並進行記...

c 中vector與list的區別

c 標準庫中,容器vector和list都可以用來存放一組型別相同的資料。而且二者不同於陣列的一點是,支援動態增長。但它們還是有有幾點不同 1 vector是順序表,表示的是一塊連續的記憶體,元素被順序儲存 list是雙向連線表,在記憶體中不一定連續。2 當數值記憶體不夠時,vector會重新申請一...

C 中vector和list排序

容器 泛型演算法 和類是不是就是c 相對於c 的那部分呢?暫時先這麼認為吧。如果這篇部落格有幸被別人看到,請幫忙指出。c 菜鳥 留。vector的迭代器是隨機訪問迭代器,支援泛型演算法的sort及其演算法。vector排序 include include include include includ...