vector,map,list,queue的區(qū)別詳細(xì)解析
1。vector (連續(xù)的空間存儲(chǔ),可以使用[]操作符)快速的訪問隨機(jī)的元素,快速的在末尾插入元素,但是在序列中間歲間的插入,刪除元素要慢,而且如果一開始分配的空間不夠的話,有一個(gè)重新分配更大空間,然后拷貝的性能開銷.
2。deque (小片的連續(xù),小片間用鏈表相連,實(shí)際上內(nèi)部有一個(gè)map的指針,因?yàn)橹李愋停赃€是可以使用[],只是速度沒有vector快)快速的訪問隨機(jī)的元素,快速的在開始和末尾插入元素,隨機(jī)的插入,刪除元素要慢,空間的重新分配要比vector快,重新分配空間后,原有的元素不需要拷貝。對(duì)deque的排序操作,可將deque先復(fù)制到vector,排序后在復(fù)制回deque。
3。list (每個(gè)元素間用鏈表相連)訪問隨機(jī)元素不如vector快,隨機(jī)的插入元素比vector快,對(duì)每個(gè)元素分配空間,所以不存在空間不夠,重新分配的情況
4。set 內(nèi)部元素唯一,用一棵平衡樹結(jié)構(gòu)來存儲(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)先出,不允許遍歷。
下面是選擇順序容器類型的一些準(zhǔn)則
1.如果我們需要隨機(jī)訪問一個(gè)容器則vector要比list好得多 。
2.如果我們已知要存儲(chǔ)元素的個(gè)數(shù)則vector 又是一個(gè)比list好的選擇。
3.如果我們需要的不只是在容器兩端插入和刪除元素則list顯然要比vector好
4.除非我們需要在容器首部插入和刪除元素否則vector要比deque好。
5.如果只在容易的首部和尾部插入數(shù)據(jù)元素,則選擇deque.
6.如果只需要在讀取輸入時(shí)在容器的中間位置插入元素,然后需要隨機(jī)訪問元素,則可考慮輸入時(shí)將元素讀入到一個(gè)List容器,接著對(duì)此容器重新拍學(xué),使其適合順序訪問,然后將排序后的list容器復(fù)制到一個(gè)vector容器中
相關(guān)文章
C++中overload,override,overwrite的區(qū)別詳細(xì)解析
以下是對(duì)C++中overload,override,overwrite的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下2013-09-09

C語(yǔ)言通訊錄管理系統(tǒng)課程設(shè)計(jì)

通過c++的sort函數(shù)實(shí)現(xiàn)成績(jī)排序功能

VC++實(shí)現(xiàn)的OpenGL線性漸變色繪制操作示例

對(duì)比C語(yǔ)言中g(shù)etc()函數(shù)和ungetc()函數(shù)的使用

C++ 中malloc()和free()函數(shù)的理解