中華南大街網(wǎng)站建設(shè)佛山百度網(wǎng)站排名優(yōu)化
相信大家已經(jīng)學(xué)過list與vector,關(guān)于它們的不同,我做了一些總結(jié),如下表:
? ? ? ? ? ? ? ? ? ? ?vector | ? ? ? ? ? ? ? ? ? ? ? ? list | |
底層結(jié)構(gòu) | 動態(tài)順序表,一段連續(xù)的空間 | 帶頭結(jié)點的雙向鏈表 |
隨機訪問 | 支持隨機訪問,訪問某個元素的效率O(1) | 不支持隨機訪問,訪問某個元素效率為O(n) |
插入和刪除 | 隨意位置插入和刪除的效率低,需要搬移元素,時間復(fù)雜度為O(N),插入時可能需要增容,就是開辟新的空間,拷貝元素,釋放舊空間,導(dǎo)致效率更低 | 任意位置插入和刪除效率高,不需要搬移元素,時間復(fù)雜度為O(1) |
空間利用率 | 底層為連續(xù)空間,不容易造成內(nèi)存碎片,空間利用率高,緩存利用率高 | 底層結(jié)點動態(tài)開辟,小結(jié)點容易造成內(nèi)存碎片,空間利用率低,緩存利用率低 |
迭代器 | 原生態(tài)指針 | 對原生態(tài)指針(結(jié)點指針)進行封裝 |
迭代器失效 | 在插入元素時,要給所有迭代器重新賦值,因為插入元素有可能會導(dǎo)致重新擴容,致使原來的迭代器失效,刪除時,當前迭代器需要重新賦值,否則會失效 | 插入元素不會導(dǎo)致迭代器時效,刪除元素時,只會導(dǎo)致當前迭代器失效,其他迭代器不受影響 |
使用場景 | 需要高效存儲,支持隨機訪問,不關(guān)心插入刪除效率 | 大量插入和刪除操作,不關(guān)心隨機訪問 |