類模板
<map>

std::multimap

template < class Key,                                     // multimap::key_type           class T,                                       // multimap::mapped_type           class Compare = less<Key>,                     // multimap::key_compare           class Alloc = allocator<pair<const Key,T> >    // multimap::allocator_type           > class multimap;
多鍵對映
Multimap 是關聯容器,它們儲存由鍵值和對映值組合而成的元素,遵循特定順序,並且允許多個元素具有等效的鍵。

multimap通常,鍵值用於對元素進行排序和唯一標識,而對映值儲存與該鍵關聯的內容。鍵和對映值的型別可以不同,並在成員型別value_type中組合在一起,這是一個包含兩者的pair型別。

1
typedef pair<const Key, T> value_type;

在內部,multimap它們總是根據其內部的比較物件(型別為Compare).

multimap)按鍵進行排序,遵循特定的嚴格弱序。與 unordered_multimap 容器相比,multimap 容器透過鍵訪問單個元素通常速度較慢,但它們允許基於順序對子集進行直接迭代。

Multimaps 通常實現為二叉搜尋樹。

容器屬性

關聯容器
關聯容器中的元素由其引用,而不是由其在容器中的絕對位置引用。
有序的
容器中的元素始終遵循嚴格的順序。所有插入的元素都會在此順序中獲得一個位置。
對映
每個元素都關聯一個鍵和一個對映值:鍵用於標識元素,其主要內容是對映值。
多個等效鍵
容器中的多個元素可以具有等效的鍵。
感知分配器
容器使用分配器物件來動態處理其儲存需求。

模板引數

鍵的型別。multimap 中的每個元素都由其鍵值標識。map由其鍵值標識。
別名為成員型別multimap::key_type.
T
對映值的型別。multimap 中的每個元素都儲存一些資料作為其對映值。multimap儲存一些資料作為其對映值。
別名為成員型別multimap::mapped_type.
Compare
一個二元謂詞,它接受兩個元素鍵作為引數並返回一個 bool 值。comp(a,b),其中 comp 是此型別的物件,a 和 b 是元素鍵,應返回bool值。表示式comp(a,b)false。這可以是一個函式指標或函式物件(建構函式的示例請參見 multimap::multimap)。預設情況下為true
要放回的字元的multimap物件使用此表示式來確定元素在容器中遵循的順序以及兩個元素鍵是否等效(透過自反比較它們:如果!comp(a,b) && !comp(b,a)).
預設情況下為 less<T>。less<T>,其返回結果與應用小於運算子 (a<b).
別名為成員型別multimap::key_compare.
Alloc
用於定義儲存分配模型的分配器物件型別。預設情況下,使用 allocator 類模板,它定義了最簡單的記憶體分配模型並且與值無關。
別名為成員型別multimap::allocator_type.

成員型別

成員型別定義說明
key_type第一個模板引數 ()
mapped_type第二個模板引數 (T)
value_typepair<const key_type,mapped_type>
key_compare第三個模板引數 (Compare)預設為less<key_type>
value_compare比較元素的巢狀函式類參見 multimap::value_comp
allocator_type第四個模板引數(Alloc)預設為allocator<value_type>
引用allocator_type::reference對於預設的 allocatorvalue_type&
const_referenceallocator_type::const_reference對於預設的 allocatorconst value_type&
指標allocator_type::pointer對於預設的 allocatorvalue_type*
const_pointerallocator_type::const_pointer對於預設的 allocatorconst value_type*
iterator指向value_type隨機訪問迭代器,可轉換為const_iterator
const_iterator指向const value_type
reverse_iteratorreverse_iterator<iterator>
const_reverse_iteratorreverse_iterator<const_iterator>
difference_type一個有符號整數型別,與iterator_traits<iterator>::difference_type相同,通常與 ptrdiff_t 一樣
size_type一個可以表示任何非負值的difference_type的無符號整數型別,通常與 size_t 一樣
成員型別定義說明
key_type第一個模板引數 ()
mapped_type第二個模板引數 (T)
value_typepair<const key_type,mapped_type>
key_compare第三個模板引數 (Compare)預設為less<key_type>
value_compare比較元素的巢狀函式類參見 multimap::value_comp
allocator_type第四個模板引數(Alloc)預設為allocator<value_type>
引用value_type&
const_referenceconst value_type&
指標allocator_traits<allocator_type>::pointer對於預設的 allocatorvalue_type*
const_pointerallocator_traits<allocator_type>::const_pointer對於預設的 allocatorconst value_type*
iterator指向value_type隨機訪問迭代器,可轉換為const_iterator
const_iterator指向const value_type
reverse_iteratorreverse_iterator<iterator>
const_reverse_iteratorreverse_iterator<const_iterator>
difference_type一個有符號整數型別,與
iterator_traits<iterator>::difference_type
相同,通常與 ptrdiff_t 一樣
size_type一個可以表示任何非負值的difference_type的無符號整數型別,通常與 size_t 一樣

成員函式


迭代器:

容量:

修改器:

觀察器:

操作:

分配器: