|
|
(1)
|
(C++11 起)
|
|
|
(2)
|
(C++17 起)
|
|
|
|
|
std::unordered_multimap
是一种无序关联容器,支持等价键(一个 unordered_multimap 可以包含多个相同键值的副本)并将另一种类型的值与键关联。unordered_multimap 类支持前向迭代器。查找、插入和删除操作具有平均常数时间复杂度。
在内部,元素不会按特定顺序排序,而是被组织到多个桶中。元素被放入哪个桶完全取决于其键的哈希值。这样可以快速访问单个元素,因为一旦计算出哈希值,它就直接指向元素所在的精确桶。
此容器的迭代顺序无需保持稳定(例如,无法使用
std::equal
比较两个
std::unordered_multimap
),但每个键值比较
等价
(以
key_eq()
作为比较器时相等)的元素组会在迭代顺序中形成连续的子范围,该子范围也可通过
equal_range()
访问。
std::unordered_multimap
满足
Container
、
AllocatorAwareContainer
和
UnorderedAssociativeContainer
的要求。
std::unordered_multimap
的所有成员函数均为
constexpr
:可以在常量表达式的求值过程中创建和使用
std::unordered_multimap
对象。
然而,
std::unordered_multimap
对象通常不能是
constexpr
,因为任何动态分配的存储必须在同一常量表达式求值过程中释放。
|
(自 C++26 起)
|
|
目录
模板参数
成员类型
| 类型
|
定义
|
key_type
|
Key
|
mapped_type
|
T
|
value_type
|
std::pair<const Key, T>
|
size_type
|
无符号整数类型(通常为 std::size_t)
|
difference_type
|
有符号整数类型(通常为 std::ptrdiff_t)
|
hasher
|
Hash
|
key_equal
|
KeyEqual
|
allocator_type
|
Allocator
|
reference
|
value_type&
|
const_reference
|
const value_type&
|
pointer
|
std::allocator_traits<Allocator>::pointer
|
const_pointer
|
std::allocator_traits<Allocator>::const_pointer
|
iterator
|
LegacyForwardIterator 和ConstexprIterator(自C++26起)到value_type
|
const_iterator
|
LegacyForwardIterator和ConstexprIterator(自C++26起)到const value_type
|
local_iterator
|
一种迭代器类型,其类别、值、差值、指针和 引用类型与 iterator相同。 此迭代器 可用于遍历单个桶,但不能跨桶遍历
|
const_local_iterator
|
一种迭代器类型,其类别、值、差值、指针和 引用类型与 const_iterator相同。 此迭代器 可用于遍历单个桶,但不能跨桶遍历
|
node_type (自C++17起)
|
一种 node handle 的特化,表示一个容器节点
|
成员函数
|
|
构造
unordered_multimap
(公开成员函数)
|
|
|
销毁
unordered_multimap
(公开成员函数)
|
|
|
为容器赋值
(公开成员函数)
|
|
|
返回关联的分配器
(公开成员函数)
|
迭代器
|
|
|
返回指向起始位置的迭代器
(公开成员函数)
|
|
|
返回指向末尾的迭代器
(公开成员函数)
|
容量
|
|
|
检查容器是否为空
(公开成员函数)
|
|
|
返回元素数量
(公开成员函数)
|
|
|
返回可能容纳的最大元素数
(公开成员函数)
|
修饰符
|
|
|
清空内容
(公开成员函数)
|
|
|
插入元素
或节点
(C++17 起)
(公开成员函数)
|
|
|
插入元素范围
(公开成员函数)
|
|
|
原地构造元素
(公开成员函数)
|
|
|
使用提示原位构造元素
(公开成员函数)
|
|
|
删除元素
(公开成员函数)
|
|
|
交换内容
(公开成员函数)
|
|
|
从容器中提取节点
(公开成员函数)
|
|
|
从另一容器接合节点
(公开成员函数)
|
查找
|
|
|
返回匹配特定键的元素数量
(公开成员函数)
|
|
|
根据特定键查找元素
(公开成员函数)
|
|
|
检查容器是否包含具有特定键的元素
(公开成员函数)
|
|
|
返回匹配特定键的元素范围
(公开成员函数)
|
桶接口
|
|
|
返回指向指定桶起始位置的迭代器
(公开成员函数)
|
|
|
返回指向指定桶末尾的迭代器
(公开成员函数)
|
|
|
返回桶的数量
(公开成员函数)
|
|
|
返回最大桶数量
(公开成员函数)
|
|
|
返回特定桶中的元素数量
(公开成员函数)
|
|
|
返回特定键对应的桶
(公开成员函数)
|
哈希策略
|
|
|
返回每个桶的平均元素数量
(公开成员函数)
|
|
|
管理每个桶的最大平均元素数量
(公开成员函数)
|
|
|
预留至少指定数量的桶并重新生成哈希表
(公开成员函数)
|
|
|
为至少指定数量的元素预留空间并重新生成哈希表
(公开成员函数)
|
观察器
|
|
|
返回用于哈希键的函数
(公开成员函数)
|
|
|
返回用于比较键是否相等的函数
(公开成员函数)
|
非成员函数
(C++11)
(C++11)
(removed in C++20)
|
比较 unordered_multimap 中的值
(函数模板)
|
|
|
特化
std::swap
算法
(函数模板)
|
|
|
擦除满足特定条件的所有元素
(函数模板)
|
注释
示例
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。
|
DR
|
适用版本
|
发布行为
|
正确行为
|
|
LWG 2050
|
C++11
|
reference
、
const_reference
、
pointer
和
const_pointer
的定义基于
allocator_type
|
基于
value_type
和
std::allocator_traits
|
另请参阅
|
|
键值对集合,按键哈希,键唯一
(类模板)
|
|
|
键值对集合,按键排序
(类模板)
|
|
|
适配两个容器以提供按键排序的键值对集合
(类模板)
|
|