vector,map,list,queue的區(qū)別詳細解析
1。vector (連續(xù)的空間存儲,可以使用[]操作符)快速的訪問隨機的元素,快速的在末尾插入元素,但是在序列中間歲間的插入,刪除元素要慢,而且如果一開始分配的空間不夠的話,有一個重新分配更大空間,然后拷貝的性能開銷.
2。deque (小片的連續(xù),小片間用鏈表相連,實際上內(nèi)部有一個map的指針,因為知道類型,所以還是可以使用[],只是速度沒有vector快)快速的訪問隨機的元素,快速的在開始和末尾插入元素,隨機的插入,刪除元素要慢,空間的重新分配要比vector快,重新分配空間后,原有的元素不需要拷貝。對deque的排序操作,可將deque先復制到vector,排序后在復制回deque。
3。list (每個元素間用鏈表相連)訪問隨機元素不如vector快,隨機的插入元素比vector快,對每個元素分配空間,所以不存在空間不夠,重新分配的情況
4。set 內(nèi)部元素唯一,用一棵平衡樹結(jié)構(gòu)來存儲,因此遍歷的時候就排序了,查找也比較快的哦。
5。map 一對一的映射的結(jié)合,key不能重復。
6。stack 適配器,必須結(jié)合其他的容器使用,stl中默認的內(nèi)部容器是deque。先進后出,只有一個出口,不允許遍歷。
7。queue 是受限制的deque,內(nèi)部容器一般使用list較簡單。先進先出,不允許遍歷。
下面是選擇順序容器類型的一些準則
1.如果我們需要隨機訪問一個容器則vector要比list好得多 。
2.如果我們已知要存儲元素的個數(shù)則vector 又是一個比list好的選擇。
3.如果我們需要的不只是在容器兩端插入和刪除元素則list顯然要比vector好
4.除非我們需要在容器首部插入和刪除元素否則vector要比deque好。
5.如果只在容易的首部和尾部插入數(shù)據(jù)元素,則選擇deque.
6.如果只需要在讀取輸入時在容器的中間位置插入元素,然后需要隨機訪問元素,則可考慮輸入時將元素讀入到一個List容器,接著對此容器重新拍學,使其適合順序訪問,然后將排序后的list容器復制到一個vector容器中
相關文章
OpenCV中findContours函數(shù)參數(shù)詳解
Opencv中通過使用findContours函數(shù),簡單幾個的步驟就可以檢測出物體的輪廓,很方便。本文將和大家一起探討一下findContours方法中各參數(shù)的含義及用法,感興趣的可以了解一下2022-08-08
淺談int8_t int64_t size_t ssize_t的相關問題(詳解)
下面小編就為大家?guī)硪黄獪\談int8_t int64_t size_t ssize_t的相關問題(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
C++ Template 基礎篇(一):函數(shù)模板詳解
這篇文章主要介紹了C++ Template函數(shù)模板,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04
Cocos2d-x中獲取系統(tǒng)時間和隨機數(shù)實例
這篇文章主要介紹了Cocos2d-x中獲取系統(tǒng)時間和隨機數(shù)實例,本文代碼含有大量注釋來講解獲取系統(tǒng)時間和隨機數(shù)的方法,需要的朋友可以參考下2014-09-09

