STL學習 13 容器

2021-09-24 16:50:18 字數 1063 閱讀 4397

容器分類

(1)序列性容器:

按照線性排列來儲存某型別值的集合,每個元素都有自己特有的位置,順序容器主要有vector、deque、list。

(2)關聯式容器:

與前面講到的順序容器相比,關聯容器更注重快速和高效地檢索資料的能力。這些容器是根據鍵值(key)來檢索資料的,鍵可以是值也可以是容器中的某一成員。這一類中的成員在初始化後都是按一定順序排好序的。關聯式容器主要有set、multiset、map、multimap。

(3)容器介面卡:

對已有的容器進行某些特性的再封裝,不是乙個真正的新容器。主要有stack、queue。

容器共性

容器一般來說都有下列函式。

順序容器和關聯容器共有函式如下所示。

容器比較

vector(連續的空間儲存,可以使用操作符)快速的訪問隨機的元素,快速的在末尾插入元素,但是在序列中間歲間的插入,刪除元素要慢,而且如果一開始分配的空間不夠的話,有乙個重新分配更大空間,然後拷貝的效能開銷。

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

list(每個元素間用鍊錶相連)訪問隨機元素不如vector快,隨機的插入元素比vector快,對每個元素分配空間,所以不存在空間不夠,重新分配的情況。

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

map一對一的對映的結合,key不能重複。

STL學習 容器

首先,明確的是,容器按照其內部的資料組織,分為關聯式和序列式 從上圖可以看到,heap內部含有乙個vector來實現底層儲存,priority queue又以heap為底層實現 stack和queue的實現都是依賴deque rb tree和hashtable是所有關聯式容器的底層資料結構。序列式容...

STL學習 順序容器

我以 vector 為例,總結一下 stl順序容器的基本使用。vector 是順序容器,它在很多方面類似於我們通常使用的陣列。但是它比陣列具有很多很好的特性。它使用安全,具有陣列所不具備的自增長的特性,使得 vector 在現代軟體設計中佔據重要地位。本講分五個部分,分別是初始化 迭代器 容器訪問 ...

stl容器學習目錄

vector和list的比較熟悉,乙個單鏈表,乙個雙鏈表 push pack,insert,erase,list的sort功能 great 還有演算法那個庫 slist,只能用pushfront 三 deque容器 雙端佇列 說明 include deque容器類與vector類似,支援隨機訪問和快...