共用方式為


hash_map 類別

注意事項注意事項

這個 API 已經過時。替代方案是 unordered_map 類別

從每個項目都是排序索引碼的一對且是唯一的和相關聯的資料值集合快速儲存和擷取資料。

template <
   class Key, 
   class Type, 
   class Traits=hash_compare<Key, less<Key> >, 
   class Allocator=allocator<pair <const Key, Type> > 
>
class hash_map

參數

  • Key
    要存放在雜湊地圖中的索引鍵資料類型。

  • Type
    要存放在雜湊地圖中的項目資料類型。

  • Traits
    包含兩個函式物件的類型,而類別比較來比較兩個項目值做為排序鍵來判斷其相對順序和對應項目的索引鍵值一元的述詞與型別 size_t不帶正負號的整數的雜湊函式。 這個引數是選擇性的,且 hash_compare<Key, less<Key> > 是預設值。

  • Allocator
    代表預存配置器物件 (此物件會封裝有關雜湊地圖配置和解除配置記憶體的詳細資訊) 的類型。 此引數是選擇性的,而且預設值是 allocator<pair <constKey、 Type>>。

備註

hash_map 如下:

  • 關聯的容器,可變大小容器支援項目值是以關聯的索引鍵值有效的擷取。

  • 可逆轉的,因為它提供雙向的迭代器以存取其項目。

  • 可雜湊的,因為它的項目是根據雜湊函式值的套用至雜湊桶元素的索引鍵值分組。

  • 它的項目都必須具有唯一的索引鍵。

  • 一個成對關聯的容器,因為其元素的資料值和其索引鍵值是不同的。

  • 樣板類別,因為它提供的功能是泛型和很獨立的做為項目或索引鍵包含資料的特定型別。 套用至項目和索引鍵的資料型別,和比較函式和配置器一起被指定為類別樣板的參數。

雜湊的主要好處在排序是較大的效率;成功的雜湊中常數的平均時間執行插入、刪除和尋找時間比較比例與項目數目的對數容器中的排序方式。 可以直接變更在 hash_map 的項目的值,除了沒有關聯的索引鍵值。 因此,與舊項目相關聯的索引鍵值必須刪除,而必須為新項目插入新的索引鍵值。

選擇容器型別時,應根據應用程式所需的搜尋和插入的型別。 雜湊關聯的容器最適合進行搜尋、插入和移除作業。 明確支援這些作業的成員函式很有效率,當搭配設計完善的雜湊函式,執行它們在期間平均常數和不相依於項目數目的容器。 設計良好的雜湊函式產生雜湊值的制式散發並降低衝突數,此衝突發生於獨特索引鍵值會對應至相同雜湊值時。 在最壞的情況下,最壞的雜湊函式,作業數目與項目數目成正比順序 (線性時間)。

表示滿足應用程式的關聯值的條件與其索引鍵時,內容 hash_map 應該是相關的容器中。 這種結構的模型與提供的定義關聯的字串值的唯一發生的關鍵字的排序清單。 如果常值有一個以上的正確定義,則索引鍵不是唯一的,hash_multimap 應是容器中。 另一方面,如果儲存文字清單,則 hash_set 是無效的容器。 如果文字的多個事件允許,則 hash_multiset 是適當的容器結構。

藉由呼叫 value_compare類別所儲存的雜湊 Traits 物件控制的 hash_map 排序序列。 這個儲存物件可以透過呼叫成員函式 key_comp 存取。 這類函式物件必須正常執行相同類別 hash_compare<Key, less<Key>>。 具體來說,為型別 Key的值為 Key ,呼叫 Traits(Key ) 產生型別 size_t的值的散發。

通常,項目必須是小於比較才能排序,因此若提供了兩個項目,可以判斷它們相等 (任一個都不小於另一個的意義),或者一個小於另一個。 這會導致在非對等元件之間的排序 在一個技術提示,比較函式是產生在標準數學概念的嚴格弱式順序的二元述詞。 二進位述詞 f(x y) 是有兩個引數 x 和 y 和回傳值 true 或 false 的函示物件。 如果二進位述詞是非反身屬性、非對稱的、可傳遞的,則給 hash_map 安排順序是嚴格弱式順序,如果等價是傳遞的,其中兩個物件的 x 和 y 定義相等,當兩個 f(x, y) 和 f(x, y) 是錯誤的。 如果索引鍵之間相等的更強狀況取代原本的相等,則該定序變得全部 (也就是所有項目的排序將有關於其他項目),因此相符索引鍵的項目與其他項目將難以辨別。

項目實際順序在受控制序列中取決於雜湊函式、排序函式及容器物件儲存的雜湊資料表的目前大小。 您無法判斷雜湊資料表的目前大小,因此,您無法預測一般項目順序是在受控制序列的。 插入項目不會使任何迭代器無效,移除項目則僅會使特別指向被移除的項目的迭代器無效。

hash_map 類別提供的迭代器是雙向的迭代器,不過類別成員函式 inserthash_map 擁有以樣板參數作為較弱的輸入迭代器之版本,其功能要求較雙向迭代器的類別少。 不同的迭代器概念因其功能的修改而有關聯性。 每個迭代器概念有自己的一組需求,因此,使用它們需要限制其假定對要求的演算法由該迭代器提供。 可能會假設輸入迭代器可能已取值參考物件的陣列,而且可能會加入至序列中的下一個迭代器。 這是最小的一組功能,不過,它是足夠可以在類別成員函式中有意義地溝通有關迭代器 [First, Last) 範圍。

在 Visual C++ .NET 2003 中, <hash_map><hash_set> 標頭檔的成員不在 std 命名空間中,而是移至 stdext 命名空間。 如需詳細資訊,請參閱 stdext 命名空間

建構函式

hash_map

建構一個空的hash_map ,或者建構為其他全部、部份複製的hash_map

Typedef

allocator_type

表示hash_map 物件的allocator 類別。

const_iterator

提供雙向迭代器的類型可以讀取 hash_map 中的任何 const 項目。

const_pointer

提供 hash_map 中 const 項目之指標的類型。

const_reference

類型,其提供儲存在 hash_map 中供讀取和執行 const 作業之 const 項目的參考。

const_reverse_iterator

提供雙向迭代器的類型可以讀取 hash_map 中的任何 const 項目。

difference_type

可以用來表示 hash_map 之項目的數目在某個範圍的項目之間的帶正負號的整數類資料型別指向迭代器。

Iterator

提供隨機存取雙向迭代器的型別,可以讀取或修改 hash_map 物件中的任何項目。

key_compare

可比較兩個排序鍵以判斷兩個項目在 hash_map 中的相對順序的函式物件之型別。

key_type

型別描述構成 hash_map的每個元素的排序鍵物件。

mapped_type

表示儲存在 hash_map 的資料型別。

指標

提供 hash_map 中一個元素的指標。

參照

提供 hash_map 中一個元素的參考。

reverse_iterator

提供隨機存取迭代器型別,可以讀取或修改 hash_map 物件中的任何項目。

size_type

可以表示 hash_map中的項目數不帶正負號的整數類資料型別。

value_type

可比較兩個排序鍵以判斷兩個項目在 hash_map 中的相對順序的函式物件之型別。

成員函式

hash_map::at

使用指定的索引鍵值,尋找 hash_map 中的項目。

begin

傳回迭代器,為 hash_map 中的第一個項目定址。

hash_map::cbegin

傳回常數迭代器,為 hash_map 中的第一個項目定址。

hash_map::cend

傳回常數迭代器,為 hash_map 中最後一個項目的下一個位置定址。

clear

清除 hash_map 的所有元素。

count

傳回 hash_map 的項目數其索引鍵符合參數。

hash_map::crbegin

傳回常數迭代器,為反轉 hash_map 中的第一個項目定址。

hash_map::crend

傳回常數迭代器,為反轉 hash_map 中最後一個項目的下一個位置定址。

hash_map::emplace

將建構的項目插入 hash_map 中。

hash_map::emplace_hint

依放置提示,將建構的項目插入 hash_map 中。

empty

測試,如果 hash_map 是空的。

end

傳回迭代器,為 hash_map 中最後一個項目的下一個位置定址。

equal_range

傳回一組迭代器,分別對 hash_map 中的第一個項目與大於指定按鍵和至 hash_map 的第一個項目具有等於或大於按鍵。

清除

hash_map 的指定位置移除一個元素或一個範圍內的元素。

find

傳回迭代器有金鑰對應至指定索引鍵的項目hash_map 之位置的位址 。

get_allocator

傳回用來建構 hash_mapallocator 物件複本。

插入

插入項目或某個範圍至 hash_map

key_comp

傳回指向 hash_map 中第一個項目的迭代器,此項目擁有等於或大於特定值的索引鍵。

lower_bound

傳回指向 hash_map 中第一個項目的迭代器,此項目擁有等於或大於特定值的索引鍵。

max_size

傳回 hash_map 的最大長度

rbegin

傳回迭代器,指向反轉 hash_map 中的第一個項目。

rend

傳回迭代器,為反轉 hash_map 中最後一個項目的下一個位置定址。

size

傳回 hash_map 的元素數目。

交換

交換兩個 hash_map 的元素。

upper_bound

傳回指向 hash_map 中第一個項目的迭代器,此項目擁有大於特定值的索引鍵。

value_comp

擷取 hash_map用來命令項目值比較物件的複本。

運算子

operator[]

將具有特定索引鍵值的項目插入 hash_map 中。

hash_map::operator=

用另一個 hash_map 的複本取代 hash_map 的元素。

需求

標頭檔: <hash_map>

**命名空間:**stdext

請參閱

參考

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

標準樣板程式庫

其他資源

<hash_map> 成員

hash_map 成員