類模板
<unordered_map>

std::unordered_multimap

template < class Key,                                    // unordered_multimap::key_type           class T,                                      // unordered_multimap::mapped_type           class Hash = hash<Key>,                       // unordered_multimap::hasher           class Pred = equal_to<Key>,                   // unordered_multimap::key_equal           class Alloc = allocator< pair<const Key,T> >  // unordered_multimap::allocator_type           > class unordered_multimap;
無序多重對映
無序多重對映是關聯容器,用於儲存由鍵值對映值組合而成的元素,非常類似於 unordered_map 容器,但允許不同元素具有等效的鍵。

unordered_multimap中,鍵值通常用於唯一標識元素,而對映值是與此關聯的內容物件。對映值的型別可以不同。

在內部,unordered_multimap中的元素不會按照其對映值的任何特定順序排序,而是根據其雜湊值組織成,以便透過其鍵值快速直接訪問單個元素(平均時間複雜度為常數)。

具有等效鍵的元素被分組到同一個桶中,並且透過迭代器(請參閱 equal_range)可以遍歷所有這些元素。

容器中的迭代器至少是前向迭代器

請注意,此容器並未在自己的標頭檔案中定義,而是與 unordered_map 共享標頭檔案<unordered_map>

容器屬性

關聯式
關聯容器中的元素透過其引用,而不是透過其在容器中的絕對位置。
無序的
無序容器使用雜湊表組織其元素,從而可以透過其快速訪問元素。
對映
每個元素都將一個與一個對映值關聯起來:鍵旨在標識元素,其主要內容是對映值。
多個等效鍵
容器可以容納多個具有等效的元素。
感知分配器
容器使用分配器物件來動態處理其儲存需求。

模板引數

Key
鍵值的型別。每個元素在unordered_multimap中由一個鍵值標識。
別名為成員型別unordered_multimap::key_type.
T
對映值的型別。每個元素在unordered_multimap中用於儲存一些資料作為其對映值。
別名為成員型別unordered_multimap::mapped_type。請注意,這與unordered_multimap::value_type(見下文)不同。
Hash
一個一元函式物件型別,它接受一個 key type 型別的物件作為引數,並基於它返回一個 size_t 型別的唯一值。這可以是一個實現函式呼叫運算子的類,也可以是一個指向函式的指標(參見 建構函式 以獲取示例)。這預設為hash<Key>,它返回一個雜湊值,其碰撞機率接近1.0/std::numeric_limits<size_t>::max().
要放回的字元的unordered_multimap物件使用此函式返回的雜湊值在內部組織其元素,從而加快定位單個元素的過程。
別名為成員型別unordered_multimap::hasher.
Pred
一個二元謂詞,它接受兩個鍵型別的引數並返回一個bool值。表示式pred(a,b),其中 pred 是此型別的物件,ab 是鍵值,當 a 被認為等效於 b 時,應返回true。這可以是一個實現函式呼叫運算子的類,也可以是一個指向函式的指標(參見 建構函式 以獲取示例)。這預設為equal_to<Key>,它返回與應用等於運算子a==b).
要放回的字元的unordered_multimap)相同的結果。物件使用此表示式來確定兩個元素鍵是否等效。此容器支援多個具有等效鍵的元素。
別名為成員型別unordered_multimap::key_equal.
Alloc
用於定義儲存分配模型的分配器物件型別。預設情況下,使用 allocator 類模板,它定義了最簡單的記憶體分配模型並且與值無關。
別名為成員型別unordered_multimap::allocator_type.

unordered_multimap成員函式中,假定這些相同的名稱(KeyTHashPredAlloc)用於模板引數。

成員型別

以下別名是unordered_multimap的成員型別。它們被成員函式廣泛用作引數和返回型別。

成員型別定義說明
key_type第一個模板引數 (Key)
mapped_type第二個模板引數 (T)
value_typepair<const key_type,mapped_type>
hasher第三個模板引數 (Hash)預設為hash<key_type>
key_equal第四個模板引數 (Pred)預設為equal_to<key_type>
allocator_type第五個模板引數 (Alloc)預設為allocator<value_type>
引用Alloc::reference
const_referenceAlloc::const_reference
指標Alloc::pointer對於預設的 allocatorvalue_type*
const_pointerAlloc::const_pointer對於預設的 allocatorconst value_type*
iterator一個指向 前向迭代器value_type隨機訪問迭代器,可轉換為const_iterator
const_iterator一個指向 前向迭代器const value_type
local_iterator一個指向 前向迭代器value_type隨機訪問迭代器,可轉換為const_local_iterator
const_local_iterator一個指向 前向迭代器const value_type
size_type一個無符號整數型別的無符號整數型別,通常與 size_t 一樣
difference_type一個有符號整數型別相同,通常與 ptrdiff_t 一樣
成員型別定義說明
key_type第一個模板引數 (Key)
mapped_type第二個模板引數 (T)
value_typepair<const key_type,mapped_type>
hasher第三個模板引數 (Hash)預設為hash<key_type>
key_equal第四個模板引數 (Pred)預設為equal_to<key_type>
allocator_type第五個模板引數 (Alloc)預設為allocator<value_type>
引用value_type&
const_referenceconst value_type&
指標allocator_traits<Alloc>::pointer對於預設的 allocatorvalue_type*
const_pointerallocator_traits<Alloc>::const_pointer對於預設的 allocatorconst value_type*
iterator一個指向 前向迭代器value_type隨機訪問迭代器,可轉換為const_iterator
const_iterator一個指向 前向迭代器const value_type
local_iterator一個指向 前向迭代器value_type隨機訪問迭代器,可轉換為const_local_iterator
const_local_iterator一個指向 前向迭代器const value_type
size_type一個無符號整數型別的無符號整數型別,通常與 size_t 一樣
difference_type一個有符號整數型別相同,通常與 ptrdiff_t 一樣

成員函式


容量


迭代器


元素查詢


修改器



雜湊策略


觀察器


非成員函式過載