類模板
<map>

std::map

template < class Key,                                     // map::key_type           class T,                                       // map::mapped_type           class Compare = less<Key>,                     // map::key_compare           class Alloc = allocator<pair<const Key,T> >    // map::allocator_type           > class map;
對映
map 是關聯容器,它儲存由 鍵值對映值 組合而成的元素,並遵循特定的排序規則。

map通常,鍵值 用於對元素進行排序和唯一標識,而 對映值 儲存與此 相關聯的內容。對映值 的型別可以不同,它們被組合在成員型別value_type中,這是一個結合了兩者pair型別。

1
typedef pair<const Key, T> value_type;

在內部,mapmap 始終根據其內部的 比較物件(型別為Compare).

map)的 嚴格弱序 標準按 排序。與 unordered_map 容器相比,map 容器透過其 訪問單個元素通常較慢,但它們允許基於順序直接迭代子集。

可以透過相應的鍵使用 下標運算子operator[])直接訪問 map 中的對映值。

Map 通常實現為 二叉搜尋樹

容器屬性

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

模板引數

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

成員型別

成員型別定義說明
key_type第一個模板引數 ()
mapped_type第二個模板引數 (T)
value_typepair<const key_type,mapped_type>
key_compare第三個模板引數 (Compare)預設為less<key_type>
value_compare巢狀的函式類,用於比較元素參見 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巢狀的函式類,用於比較元素參見 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 一樣

成員函式


迭代器:

容量:

元素訪問:

修改器:

觀察器:

操作:

分配器: