国产精一区二区_午夜视频99_免费白白视频_中文字幕一区免费

熱門文章> vector和list的區別 >

vector和list的區別

36氪企服點評小編
2022-03-17 17:26
566次閱讀

| 企服解答

vector和list的區別是List封裝了鏈表,Vector封裝了數組,vector是使用連續內存存儲的,它支持[]運算符,而list是以鏈表形式實現的,不支持[]。

vector和list的區別vector和list的區別

Vector對于隨機訪問的速度很快,但是對于插入尤其是在頭部插入元素速度很慢,在尾部插入速度很快。

List對于隨機訪問速度慢得多,因為可能要遍歷整個鏈表才能做到,但是對于插入就快的多了,不需要拷貝和移動數據,只需要改變指針的指向就可以了。

另外對于新添加的元素,Vector有一套算法,而List可以任意加入。

| 擴展閱讀

vector:

向量,相當于一個數組。

在內存中分配一塊連續的內存空間進行存儲。支持不指定vector大小的存儲。STL內部實現時,首先分配一個非常大的內存空間預備進行存儲,即capacituy()函數返回的大小,當超過此分配的空間時再整體重新放分配一塊內存存儲,這給人以vector可以不指定vector即一個連續內存的大小的感覺。通常此默認的內存分配能完成大部分情況下的存儲。

優點:

1、不指定一塊內存大小的數組的連續存儲,即可以像數組一樣操作,但可以對此數組進行動態操作。通常體現在push_back() pop_back()

2、隨機訪問方便,即支持[ ]操作符和vector.at()

3、節省空間。

缺點:

1、在內部進行插入刪除操作效率低。

2、只能在vector的最后進行push和pop,不能在vector的頭進行push和pop。

3、當動態添加的數據超過vector默認分配的大小時要進行整體的重新分配、拷貝與釋放。 

list:

雙向鏈表。

每一個結點都包括一個信息快Info、一個前驅指針Pre、一個后驅指針Post??梢圆环峙浔仨毜膬却娲笮》奖愕倪M行添加和刪除操作。使用的是非連續的內存空間進行存儲。

優點:

1、不使用連續內存完成動態操作。

2、在內部方便的進行插入和刪除操作。

3、可在兩端進行push、pop。

缺點:

1、不能進行內部的隨機訪問,即不支持[ ]操作符和vector.at()

2、相對于verctor占用內存多。

[免責聲明]

文章標題: vector和list的區別

文章內容為網站編輯整理發布,僅供學習與參考,不代表本網站贊同其觀點和對其真實性負責。如涉及作品內容、版權和其它問題,請及時溝通。發送郵件至36dianping@36kr.com,我們會在3個工作日內處理。

消息通知
咨詢入駐
商務合作