类模板
<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 一样

成员函数


迭代器:

容量:

修改器:

观察器:

操作:

分配器: