std::multimap
定义在头文件 <map> 中 |
||
template< class Key, |
(1) | |
namespace pmr { template< |
(2) | (自 C++17 起) |
std::multimap
是一个关联容器,它包含一个键值对的排序列表,同时允许具有相同键的多个条目。排序是根据应用于键的比较函数 Compare
进行的。搜索、插入和删除操作具有对数复杂度。
std::multimap
的迭代器按键的非降序顺序进行迭代,其中非降序由用于构造的比较定义。也就是说,给定
- m,一个
std::multimap
- it_l 和 it_r,可解引用的迭代器指向 m,其中 it_l < it_r.
m.value_comp()(*it_r, *it_l) == false (如果使用默认比较,则从小到大)。
键比较相等的键值对的顺序是插入顺序,并且不会更改。 |
(自 C++11 起) |
在标准库使用 Compare 需求的任何地方,等价性都是通过使用 Compare 中描述的等价关系来确定的。用不精确的术语来说,两个对象 a 和 b 被认为是等价的,如果它们都不比另一个小:!comp(a, b) && !comp(b, a).
std::multimap
满足 Container、AllocatorAwareContainer、AssociativeContainer 和 ReversibleContainer 的要求。
内容 |
[编辑] 模板参数
本节不完整 原因:添加模板参数的描述。 |
[编辑] 成员类型
成员类型 | 定义 | ||||
key_type
|
Key | ||||
mapped_type
|
T | ||||
value_type
|
std::pair<const Key, T> | ||||
size_type
|
无符号整数类型(通常为 std::size_t) | ||||
difference_type
|
有符号整数类型(通常为 std::ptrdiff_t) | ||||
key_compare
|
Compare | ||||
allocator_type
|
Allocator | ||||
reference
|
value_type& | ||||
const_reference
|
const value_type& | ||||
pointer
|
| ||||
const_pointer
|
| ||||
iterator
|
LegacyBidirectionalIterator 指向 value_type | ||||
const_iterator
|
LegacyBidirectionalIterator 到 const value_type | ||||
反向迭代器
|
std::reverse_iterator<iterator> | ||||
常量反向迭代器
|
std::reverse_iterator<const_iterator> | ||||
node_type (自 C++17 起) |
表示容器节点的 节点句柄 的特化 |
[编辑] 成员类
比较 value_type 类型的对象(类) |
[编辑] 成员函数
构造 multimap (公共成员函数) | |
析构 multimap (公共成员函数) | |
将值分配给容器 (公共成员函数) | |
返回关联的分配器 (公共成员函数) | |
迭代器 | |
(C++11) |
返回指向开头的迭代器 (公共成员函数) |
(C++11) |
返回指向结尾的迭代器 (公共成员函数) |
(C++11) |
返回指向开头的反向迭代器 (公共成员函数) |
(C++11) |
返回指向结尾的反向迭代器 (公共成员函数) |
容量 | |
检查容器是否为空 (公共成员函数) | |
返回元素数量 (公共成员函数) | |
返回可能的最大元素数量 (公共成员函数) | |
修改器 | |
清除内容 (公共成员函数) | |
插入元素 或节点(自 C++17 起) (公共成员函数) | |
(C++23) |
插入一系列元素 (公共成员函数) |
(C++11) |
在原位构造元素 (公共成员函数) |
(C++11) |
使用提示在原位构造元素 (公共成员函数) |
删除元素 (公共成员函数) | |
交换内容 (公共成员函数) | |
(C++17) |
从容器中提取节点 (公共成员函数) |
(C++17) |
从另一个容器中拼接节点 (公共成员函数) |
查找 | |
返回与特定键匹配的元素数量 (公共成员函数) | |
查找具有特定键的元素 (公共成员函数) | |
(C++20) |
检查容器是否包含具有特定键的元素 (公共成员函数) |
返回与特定键匹配的元素范围 (公共成员函数) | |
返回指向第一个不小于给定键的元素的迭代器 (公共成员函数) | |
返回指向第一个大于给定键的元素的迭代器 (公共成员函数) | |
观察者 | |
返回比较键的函数 (公共成员函数) | |
返回比较 value_type 类型的对象中的键的函数(公共成员函数) |
[编辑] 非成员函数
(在 C++20 中移除)(在 C++20 中移除)(在 C++20 中移除)(在 C++20 中移除)(在 C++20 中移除)(C++20) |
按字典顺序比较两个 multimap 的值(函数模板) |
专门化了 std::swap 算法 (函数模板) | |
(C++20) |
删除所有满足特定条件的元素 (函数模板) |
推断指南 |
(自 C++17 起) |
[编辑] 注释
功能测试 宏 | 值 | Std | 功能 |
---|---|---|---|
__cpp_lib_containers_ranges |
202202L | (C++23) | 容器的范围构造和插入 |
[编辑] 示例
本节不完整 原因:没有示例 |
[编辑] 缺陷报告
以下行为变更缺陷报告已追溯应用于先前发布的 C++ 标准。
DR | 应用于 | 已发布的行为 | 正确行为 |
---|---|---|---|
LWG 230 | C++98 | Key 不需要是 CopyConstructible(类型为 Key 的键可能无法构造) |
Key 还要求是 CopyConstructible |
[编辑] 另请参见
键值对集合,按键排序,键是唯一的 (类模板) | |
(C++11) |
键值对集合,通过键进行散列 (类模板) |
(C++23) |
通过适配两个容器来提供键值对集合,按键排序 (类模板) |