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

成员函数


容量


迭代器


元素查找


修改器



哈希策略


观察器


非成员函数重载