共用方式為


unordered_map 類別

此樣板類別描述控制不同長度的 std::pair<const Key, Ty> 類型項目序列的物件。 序列由雜湊函式弱式排序,將序列分割為子序列的已排序集合,稱為 Bucket。 在每個 Bucket 中,比較函式判斷是否有任何一對項目具有對等順序。 每個項目儲存兩個物件:排序鍵和值。 序列表示允許以一些作業查閱、插入和移除任意項目,這些作業可以獨立於序列中的項目數目 (常數時間),至少當所有 Bucket 長度大約相等時。 在最壞的情況下,當所有項目都在一個 Bucket 時,作業數目與序列中的項目數目成正比 (線性時間)。 此外,插入項目不會使任何迭代器無效,移除項目則僅會使指向被移除項目的迭代器無效。

template<class Key,
    class Ty,
    class Hash = std::hash<Key>,
    class Pred = std::equal_to<Key>,
    class Alloc = std::allocator<std::pair<const Key, Ty> > >
    class unordered_map;

參數

參數

描述

Key

索引鍵類型。

Ty

對應的類型。

Hash

雜湊函式物件類型。

Pred

相等比較函式物件類型。

Alloc

配置器類別。

成員

類型定義

描述

unordered_map::allocator_type

管理儲存體的配置器類型。

unordered_map::const_iterator

用於受控制序列的常數迭代器類型。

unordered_map::const_local_iterator

用於受控制序列的常數 Bucket 迭代器類型。

unordered_map::const_pointer

項目的常數指標類型。

unordered_map::const_reference

項目的常數參考類型。

unordered_map::difference_type

兩個項目之間的帶正負號距離的類型。

unordered_map::hasher

雜湊函式的類型。

unordered_map::iterator

受控制序列之迭代器的類型。

unordered_map::key_equal

比較函式的類型。

unordered_map::key_type

排序索引鍵的類型。

unordered_map::local_iterator

用於受控制序列的 Bucket 迭代器類型。

unordered_map::mapped_type

與每個索引鍵關聯的對應值類型。

unordered_map::pointer

項目的指標類型。

unordered_map::reference

項目的參考類型。

unordered_map::size_type

兩個項目之間的不帶正負號距離的類型。

unordered_map::value_type

項目的類型。

成員函式

描述

unordered_map::at

尋找具有指定之索引鍵的項目。

unordered_map::begin

指定受控制序列的開頭。

unordered_map::bucket

取得索引鍵值的 Bucket 值。

unordered_map::bucket_count

取得 Bucket 的數目。

unordered_map::bucket_size

取得 Bucket 大小。

unordered_map::cbegin

指定受控制序列的開頭。

unordered_map::cend

指定受控制序列的結尾。

unordered_map::clear

移除所有項目。

unordered_map::count

尋找符合指定索引鍵的項目數目。

unordered_map::emplace

加入就地建構的項目。

unordered_map::emplace_hint

加入就地建構的項目,含提示。

unordered_map::empty

測試項目是否不存在。

unordered_map::end

指定受控制序列的結尾。

unordered_map::equal_range

尋找符合指定之索引鍵的範圍。

unordered_map::erase

移除位於指定位置的項目。

unordered_map::find

尋找符合指定之索引鍵的項目。

unordered_map::get_allocator

取得已儲存的配置器物件。

unordered_map::hash_function

取得儲存的雜湊函式物件。

unordered_map::insert

加入項目。

unordered_map::key_eq

取得儲存的比較函式物件。

unordered_map::load_factor

計算每個 Bucket 平均項目。

unordered_map::max_bucket_count

取得 Bucket 最大數目。

unordered_map::max_load_factor

取得或設定每個 Bucket 最大項目數。

unordered_map::max_size

取得受控制序列的大小上限。

unordered_map::rehash

重建雜湊資料表。

unordered_map::size

計算項目的數目。

unordered_map::swap

交換兩個容器的內容。

unordered_map::unordered_map

建構容器物件。

運算子

描述

unordered_map::operator[]

尋找或插入具有指定索引鍵的項目。

unordered_map::operator=

複製雜湊資料表。

備註

物件是藉由呼叫下列兩個預存物件,排序它所控制的序列:unordered_map::key_equal 類型的比較函式物件和 unordered_map::hasher 類型的雜湊函式物件。 您可以呼叫成員函式 unordered_map::key_eq() 存取第一個儲存的物件,以及呼叫成員函式 unordered_map::hash_function() 存取第二個儲存的物件。 具體來說,只有在兩個引數值具有對等順序,對於 Key 類型的所有值 X 和 Y,呼叫 key_eq()(X, Y) 才會傳回 true,呼叫 hash_function()(keyval) 會產生 size_t 類型值的分佈。 不同於樣板類別 unordered_multimap 類別,樣板類別 unordered_map 的物件可保證 key_eq()(X, Y) 針對受控制序列的任何兩個項目永遠是 false (索引鍵是唯一的)。

物件也會儲存最大載入因數,指定每個 Bucket 所需的項目平均數目上限。 如果插入項目會使 unordered_map::load_factor() 超出最大的載入因數,容器會增加 Bucket 的數目並視需要重建雜湊資料表。

受控制序列中實際的項目順序取決於雜湊函式、比較函式、插入順序、最大載入因數和 Bucket 目前數目。 一般來說,您無法預測受控制序列中的項目順序。 不過,您永遠可以確保,有對等順序的任何項目子集在受控制序列中為相鄰。

物件透過 unordered_map::allocator_type 類型的預存配置器物件,為它所控制的序列配置和釋放儲存體。 這種配置器物件必須具有和 allocator 樣板類別物件相同的外部介面。 請注意,如果已指定容器物件,儲存的配置器物件不會複製。

需求

標頭:<unordered_map>

命名空間: std

請參閱

參考

<unordered_map>

C++ 標準程式庫中的執行緒安全

標準樣板程式庫

概念

容器