STL中vector和list的區(qū)別

STL中的vector特點(diǎn)是: 其容量在需要時(shí)可以自動(dòng)分配,本質(zhì)上是數(shù)組形式的存儲(chǔ)方式。即在索引可以在常數(shù)時(shí)間內(nèi)完成。缺點(diǎn)是在插入或者刪除一項(xiàng)時(shí),需要線性時(shí)間。但是在尾部插入或者刪除,是常數(shù)時(shí)間的。

STL的 list 是雙向鏈表:如果知道位置,在其中進(jìn)行插入和刪除操作時(shí),是常數(shù)時(shí)間的。索引則需要線性時(shí)間(和單鏈表一樣)。

vector 和 list 都支持在常量的時(shí)間內(nèi)在容器的末尾添加或者刪除項(xiàng),vector和list都支持在常量的時(shí)間內(nèi)訪問表的前端的項(xiàng).

vector會(huì)一次分配多個(gè)元素內(nèi)存,那么下次增加時(shí),只是改寫內(nèi)存而已,就不會(huì)再分配內(nèi)存了,但是list每次只分配一個(gè)元素的內(nèi)存,每次增加一個(gè)元素時(shí),都會(huì)執(zhí)行一次內(nèi)存分配行為。如果是大量數(shù)據(jù)追加,建議使用list,因?yàn)関ector 在有大量元素,并且內(nèi)存已滿,再pushback元素時(shí),需要分配大塊內(nèi)存并把已經(jīng)有的數(shù)據(jù)move到新分配的內(nèi)存中去(vector不能加入不可復(fù)制元素)然后再釋放原來的內(nèi)存塊,這些操作很耗時(shí)。而list的性能而會(huì)始終于一的,不會(huì)出現(xiàn)vector的性能變化情況,所以對(duì)于容器構(gòu)件,需要用什么類型最好,取決于業(yè)務(wù)邏輯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 標(biāo)簽(空格分隔): STL 運(yùn)用STL,可以充分利用該庫(kù)的設(shè)計(jì),讓我為簡(jiǎn)單而直接的問題設(shè)計(jì)出簡(jiǎn)單而直接的解決方案,...
    認(rèn)真學(xué)計(jì)算機(jī)閱讀 1,587評(píng)論 0 10
  • STL部分 1.STL為什么廣泛被使用 C++ STL 之所以得到廣泛的贊譽(yù),也被很多人使用,不只是提供了像vec...
    杰倫哎呦哎呦閱讀 4,465評(píng)論 0 9
  • 這幾天不是起早就是貪黑,昨晚到家十點(diǎn)半多了,今天早晨又是三點(diǎn)起床,為了一對(duì)新人有一個(gè)完美浪漫的婚禮,所有團(tuán)隊(duì)的伙伴...
    阿濤演藝閱讀 172評(píng)論 0 1
  • 畢業(yè)五年拉開人一生的差距,幾年前看到這個(gè)標(biāo)題與文章,讓我印象深刻!現(xiàn)在畢業(yè)遠(yuǎn)遠(yuǎn)超過五年,看到自己的同學(xué),剛...
    黃小美的美閱讀 381評(píng)論 0 0
  • 橙思:時(shí)間倏忽而過,總是在不經(jīng)意間回頭發(fā)現(xiàn),身后像有一個(gè)時(shí)光小偷,等你醒悟過來,他已走遠(yuǎn)。 2016,不回頭,不倒...
    nico小花閱讀 169評(píng)論 0 0

友情鏈接更多精彩內(nèi)容