vector和list的區別

2021-10-22 10:47:10 字數 657 閱讀 1715

1.記憶體空間

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

2.訪問

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

3.插入或刪除

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

4.儲存結構

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

5.對迭代器的支援不同

相同點在於,vector< int >::iterator和list< int >::iterator都過載了 「++ 」操作。

而不同點在於,在vector中,iterator支援 」+「、」+=「,」<"等操作。而list中則不支援。

list和vector的區別

vector和built in陣列類似,它擁有一段連續的記憶體空間,並且起始位址不變,因此它能夠非常好的支援隨機訪問,即操作符,但由於它的記憶體空間是連續的,所以在中間進行插入和刪除會造成記憶體塊的拷貝。另外,當該陣列後的記憶體空間不夠時,需要重新申請一塊足夠大的記憶體並進行記憶體的拷貝。這些都大大...

vector和list的區別

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

list和vector的區別

vector和動態陣列類似,擁有一段連續的記憶體空間,能高效的進行隨機訪問,時間複雜度為o 1 但在進行插入和刪除操作時,會造成記憶體塊的拷貝,時間複雜度為o n 2.list資料結構 list是由雙向鍊錶實現的,記憶體空間是不連續的。訪問資料時間複雜度為o n 但能高效地進行插入和刪除。已知元素是...