vector,map,list,queue的區(qū)別詳細(xì)解析
1。vector (連續(xù)的空間存儲(chǔ),可以使用[]操作符)快速的訪問(wèn)隨機(jī)的元素,快速的在末尾插入元素,但是在序列中間歲間的插入,刪除元素要慢,而且如果一開(kāi)始分配的空間不夠的話,有一個(gè)重新分配更大空間,然后拷貝的性能開(kāi)銷(xiāo).
2。deque (小片的連續(xù),小片間用鏈表相連,實(shí)際上內(nèi)部有一個(gè)map的指針,因?yàn)橹李?lèi)型,所以還是可以使用[],只是速度沒(méi)有vector快)快速的訪問(wèn)隨機(jī)的元素,快速的在開(kāi)始和末尾插入元素,隨機(jī)的插入,刪除元素要慢,空間的重新分配要比vector快,重新分配空間后,原有的元素不需要拷貝。對(duì)deque的排序操作,可將deque先復(fù)制到vector,排序后在復(fù)制回deque。
3。list (每個(gè)元素間用鏈表相連)訪問(wèn)隨機(jī)元素不如vector快,隨機(jī)的插入元素比vector快,對(duì)每個(gè)元素分配空間,所以不存在空間不夠,重新分配的情況
4。set 內(nèi)部元素唯一,用一棵平衡樹(shù)結(jié)構(gòu)來(lái)存儲(chǔ),因此遍歷的時(shí)候就排序了,查找也比較快的哦。
5。map 一對(duì)一的映射的結(jié)合,key不能重復(fù)。
6。stack 適配器,必須結(jié)合其他的容器使用,stl中默認(rèn)的內(nèi)部容器是deque。先進(jìn)后出,只有一個(gè)出口,不允許遍歷。
7。queue 是受限制的deque,內(nèi)部容器一般使用list較簡(jiǎn)單。先進(jìn)先出,不允許遍歷。
下面是選擇順序容器類(lèi)型的一些準(zhǔn)則
1.如果我們需要隨機(jī)訪問(wèn)一個(gè)容器則vector要比list好得多 。
2.如果我們已知要存儲(chǔ)元素的個(gè)數(shù)則vector 又是一個(gè)比list好的選擇。
3.如果我們需要的不只是在容器兩端插入和刪除元素則list顯然要比vector好
4.除非我們需要在容器首部插入和刪除元素否則vector要比deque好。
5.如果只在容易的首部和尾部插入數(shù)據(jù)元素,則選擇deque.
6.如果只需要在讀取輸入時(shí)在容器的中間位置插入元素,然后需要隨機(jī)訪問(wèn)元素,則可考慮輸入時(shí)將元素讀入到一個(gè)List容器,接著對(duì)此容器重新拍學(xué),使其適合順序訪問(wèn),然后將排序后的list容器復(fù)制到一個(gè)vector容器中
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易連連看游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易連連看游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
OpenCV中findContours函數(shù)參數(shù)詳解
Opencv中通過(guò)使用findContours函數(shù),簡(jiǎn)單幾個(gè)的步驟就可以檢測(cè)出物體的輪廓,很方便。本文將和大家一起探討一下findContours方法中各參數(shù)的含義及用法,感興趣的可以了解一下2022-08-08
C語(yǔ)言中自動(dòng)與強(qiáng)制轉(zhuǎn)換全解析
在編寫(xiě)C程序時(shí),類(lèi)型轉(zhuǎn)換是確保數(shù)據(jù)正確性和一致性的關(guān)鍵環(huán)節(jié),無(wú)論是隱式轉(zhuǎn)換還是顯式轉(zhuǎn)換,都各有特點(diǎn)和應(yīng)用場(chǎng)景,本文將詳細(xì)探討C語(yǔ)言中的類(lèi)型轉(zhuǎn)換機(jī)制,幫助您更好地理解并在實(shí)際編碼中靈活運(yùn)用這些知識(shí),需要的朋友可以參考下2025-02-02
淺談int8_t int64_t size_t ssize_t的相關(guān)問(wèn)題(詳解)
下面小編就為大家?guī)?lái)一篇淺談int8_t int64_t size_t ssize_t的相關(guān)問(wèn)題(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
C語(yǔ)言代碼實(shí)現(xiàn)簡(jiǎn)單掃雷小游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01
C++ Template 基礎(chǔ)篇(一):函數(shù)模板詳解
這篇文章主要介紹了C++ Template函數(shù)模板,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Cocos2d-x中獲取系統(tǒng)時(shí)間和隨機(jī)數(shù)實(shí)例
這篇文章主要介紹了Cocos2d-x中獲取系統(tǒng)時(shí)間和隨機(jī)數(shù)實(shí)例,本文代碼含有大量注釋來(lái)講解獲取系統(tǒng)時(shí)間和隨機(jī)數(shù)的方法,需要的朋友可以參考下2014-09-09
C語(yǔ)言中位運(yùn)算符"|"的5種高級(jí)用法總結(jié)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言中位運(yùn)算符"|"的5種高級(jí)用法,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,需要的可以參考一下2023-04-04
C++ 先對(duì)數(shù)組排序,在進(jìn)行折半查找
以下小編就為大家介紹兩種實(shí)現(xiàn)方法。第一種方法是,選擇排序法+循環(huán)折半查找法。第二種方法是,冒泡排序法+遞歸折半查找法。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-10-10

