Share via


STL 容器

標準樣板程式庫 (STL) 提供數個容器儲存相關物件的集合。 容器會是所有的樣板類別,可讓您指定哪些物件可以在容器中。 本主題提供 STL 容器,可協助您決定將哪個容器最適合您需求的概觀。

有兩個可從中選擇的 STL 程式庫: 原生 STL 和 STL/CLR。 如需有關 STL/CLR 的詳細資訊,請參閱STL/CLR 程式庫參考

在 STL 容器可以分成三個類別、 序列容器、 關聯容器及容器配接器。 這些類別和集合隸屬於每個類別,此彙總。 在容器的參考文件,就可以找到更詳細的資訊。

序列容器

序列容器維護原始插入的項目的順序。 這可讓您指定想来插入容器中的項目。

deque (雙向佇列中) 的容器可以快速的插入與刪除的開頭和結尾的容器。 您也會隨機快速存取任何項目。

list容器可以讓快速的插入與刪除容器中的任何地方,但您無法隨機存取容器中的項目。

vector容器,就等於是陣列,而將自動成長視需要而定。

如需有關順序容器的詳細資訊,請參閱下表:

容器

原生 STL

STL/CLR

deque

deque Class

deque (STL/CLR)

list

list Class

list (STL/CLR)

vector

vector Class

vector (STL/CLR)

關聯的容器

定義關聯的容器的特性是項目會插入在預先定義,例如排序順序遞增。

關聯的容器可以群組成兩個子集: 對應和設定。 A map、 有時稱為 「 字典、 索引鍵/值組所組成。 金鑰用來排序序列,而值是某種方式該機碼相關聯。 例如, map可能會包含索引鍵表示每個唯一字的文字和數值,代表 word 就會出現在文字中的次數。 A set是只是一個遞增容器的唯一項目。

兩者都mapset只允許一個執行個體的機碼或插入至容器的項目。 如果需要多個執行個體的項目,請使用multimapmultiset

同時會將對應,並設定支援雙向 iterator。 如需有關 iterator 的詳細資訊,請參閱Iterator

而不正式部份 STL 標準, hash_maphash_set通常用來改善搜尋的時間。 這些容器儲存其元素為雜湊資料表,其中包含雙向連結的清單的項目每一個資料表項目資料。 若要確保最快的搜尋時間,請確定您元件的雜湊演算法會傳回平均分佈的雜湊值。

如需有關關聯的容器的詳細資訊,請參閱下表:

容器

原生 STL

STL/CLR

hash_map

hash_map Class

hash_map (STL/CLR)

hash_multimap

hash_multimap Class

hash_multimap (STL/CLR)

hash_multiset

hash_multiset Class

hash_multiset (STL/CLR)

hash_set

hash_set Class

hash_set (STL/CLR)

map

map Class

map (STL/CLR)

multimap

multimap Class

multimap (STL/CLR)

multiset

multiset Class

多重集 (STL/CLR)

set

set Class

set (STL/CLR)

容器的介面卡

容器的介面卡是只要變形上述的容器。 容器的介面卡不支援 iterator。

priority_queue容器組織擁有的最大值的項目永遠為第一個佇列中。

queue容器後面 (第一次,第一個出視窗中) 的 FIFO 語意。 插入的第一個項目 (推入) 到佇列是最先被移除 (取出)。

stack容器遵循 LIFO (先出的最後一個) 的語意。 要插入的最後一個元素 (推入) 在堆疊上會被移除 (取出) 的第一個項目。

容器的介面卡不支援 iterator,因為他們不適用於 STL 演算法。 如需有關演算法的詳細資訊,請參閱演算法

如需有關的容器配接器的詳細資訊,請參閱下表:

容器

原生 STL

STL/CLR

priority_queue

priority_queue Class

priority_queue (STL/CLR)

queue

queue Class

queue (STL/CLR)

stack

stack Class

stack (STL/CLR)

容器項目的需求

STL 容器所插入的元素可以是公用的複製建構函式、 解構函式公用和公用設定運算子會提供任何物件型別。 解構函式可能不會擲回例外狀況。 此外,關聯的容器,例如setmap必須具有公用的比較運算子定義,也就是運算子 < 根據預設值。 只有公用預設建構函式和一個公用的等價運算子,也可能會要求在容器上的某些作業。

存取容器的項目

使用 iterator 存取容器的項目。 如需詳細資訊,請參閱 Iterator

注意事項注意事項

您也可以使用針對每一個,在來重複 STL 集合。如需詳細資訊,請參閱 How to: 反覆運算 STL 集合與每個

請參閱

參考

標準樣板程式庫

<sample container>