1. 程式人生 > >C++各個容器比較(vector,deque,list,set,map,queue,stack)

C++各個容器比較(vector,deque,list,set,map,queue,stack)

1、vector(連續的空間儲存,可以使用[ ]操作符)可以快速的訪問隨機的元素,快速的在末尾插入元素,但是在序列中間隨機的插入、刪除元素要慢。而且,如果一開始分配的空間不夠時,有一個重新分配更大空間的過程。

2、deque(小片的連續,小片間用連結串列相連,實際上內部有一個map的指標,因為知道型別,所以還是可以使用[ ],只是速度沒有vector快)快速的訪問隨機的元素,快速的在開始和末尾插入元素。隨機的插入刪除元素要慢,空間的從新分配空間後,原有的元素不需要備份。對deque的排序操作,可將deque先複製到vector,排序後再複製回deque

3、list(每個元素間用連結串列相連)訪問隨機元素沒有vector快,隨機地插入元素要比vector快,對每個元素分配空間,不存在空間不夠,重新分配的情況。

4、set內部元素唯一,用一棵平衡樹結構來儲存,因此遍歷的時候就排序了,查詢也比較快

5、map一對一地對映結合,key沒有重複

6、queue的宣告queue<int,deque<int> > s是受限的佇列,儲存的空間由第二個引數的容器確定,第一個引數在沒有第二個引數的情況下,決定儲存空間型別,第二個引數存在的情況下,第一個型別引數無效。預設情況下是deque型別的,因此可以如此宣告queue<int> s1,這樣,宣告的佇列儲存空間就是預設的deque。另外,queue第二個引數可以選擇的容器型別包括deque、list,其餘的如果宣告,操作受限。

7、stack的預設儲存空間也是deque,其他的宣告和queue差不多,可以使用的容器型別包括deque、vector、list,stack是先進後出棧。