vector,map,list,queue的區(qū)別詳細(xì)解析
1。vector (連續(xù)的空間存儲,可以使用[]操作符)快速的訪問隨機(jī)的元素,快速的在末尾插入元素,但是在序列中間歲間的插入,刪除元素要慢,而且如果一開始分配的空間不夠的話,有一個重新分配更大空間,然后拷貝的性能開銷.
2。deque (小片的連續(xù),小片間用鏈表相連,實(shí)際上內(nèi)部有一個map的指針,因?yàn)橹李愋停赃€是可以使用[],只是速度沒有vector快)快速的訪問隨機(jī)的元素,快速的在開始和末尾插入元素,隨機(jī)的插入,刪除元素要慢,空間的重新分配要比vector快,重新分配空間后,原有的元素不需要拷貝。對deque的排序操作,可將deque先復(fù)制到vector,排序后在復(fù)制回deque。
3。list (每個元素間用鏈表相連)訪問隨機(jī)元素不如vector快,隨機(jī)的插入元素比vector快,對每個元素分配空間,所以不存在空間不夠,重新分配的情況
4。set 內(nèi)部元素唯一,用一棵平衡樹結(jié)構(gòu)來存儲,因此遍歷的時(shí)候就排序了,查找也比較快的哦。
5。map 一對一的映射的結(jié)合,key不能重復(fù)。
6。stack 適配器,必須結(jié)合其他的容器使用,stl中默認(rèn)的內(nèi)部容器是deque。先進(jìn)后出,只有一個出口,不允許遍歷。
7。queue 是受限制的deque,內(nèi)部容器一般使用list較簡單。先進(jìn)先出,不允許遍歷。
下面是選擇順序容器類型的一些準(zhǔn)則
1.如果我們需要隨機(jī)訪問一個容器則vector要比list好得多 。
2.如果我們已知要存儲元素的個數(shù)則vector 又是一個比list好的選擇。
3.如果我們需要的不只是在容器兩端插入和刪除元素則list顯然要比vector好
4.除非我們需要在容器首部插入和刪除元素否則vector要比deque好。
5.如果只在容易的首部和尾部插入數(shù)據(jù)元素,則選擇deque.
6.如果只需要在讀取輸入時(shí)在容器的中間位置插入元素,然后需要隨機(jī)訪問元素,則可考慮輸入時(shí)將元素讀入到一個List容器,接著對此容器重新拍學(xué),使其適合順序訪問,然后將排序后的list容器復(fù)制到一個vector容器中
上一篇:關(guān)于STL中的map容器的一些總結(jié)
欄 目:C語言
本文標(biāo)題:vector,map,list,queue的區(qū)別詳細(xì)解析
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/4081.html
您可能感興趣的文章
- 01-10異步http listener 完全并發(fā)處理懲罰http懇求的小例子
- 01-10基于C++ list中erase與remove函數(shù)的使用詳解
- 01-10使用map實(shí)現(xiàn)單詞轉(zhuǎn)換的實(shí)例分析
- 01-10海量數(shù)據(jù)處理系列之:用C++實(shí)現(xiàn)Bitmap算法
- 01-10求素?cái)?shù),用vector存儲的實(shí)現(xiàn)方法
- 01-10解析bitmap處理海量數(shù)據(jù)及其實(shí)現(xiàn)方法分析
- 01-10va_list(),va_start(),va_arg(),va_end() 詳細(xì)解析
- 01-10map插入自定義對象總結(jié)
- 01-10STL list鏈表的用法詳細(xì)解析
- 01-10關(guān)于STL中vector容器的一些總結(jié)


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求