std::multimap
定义于头文件 <map> |
||
template< class Key, |
(1) | |
namespace pmr { template< |
(2) | (since 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 (如果使用默认比较,则为从小到大)。
键值对的顺序,如果其键比较等效,则为插入顺序且不会更改。 |
(since C++11) |
标准库在任何地方使用 Compare 要求,等效性是通过使用 Compare 上描述的等价关系来确定的。用不精确的术语来说,如果两个对象 a 和 b 都不小于另一个,则认为它们是等效的: !comp(a, b) && !comp(b, a)。
std::multimap
满足 Container、AllocatorAwareContainer、AssociativeContainer 和 ReversibleContainer 的要求。
|
(since 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) | ||||
key_compare
|
Compare | ||||
allocator_type
|
Allocator | ||||
reference
|
value_type& | ||||
const_reference
|
const value_type& | ||||
pointer
|
| ||||
const_pointer
|
| ||||
iterator
|
LegacyBidirectionalIterator 和 ConstexprIterator(自 C++26 起) 到 value_type | ||||
const_iterator
|
LegacyBidirectionalIterator 和 ConstexprIterator(自 C++26 起) 到 const value_type | ||||
reverse_iterator
|
std::reverse_iterator<iterator> | ||||
const_reverse_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) |
移除所有满足特定标准的元素 (函数模板) |
推导指引 |
(since C++17) |
[编辑] 注解
特性测试 宏 | 值 | Std | 特性 |
---|---|---|---|
__cpp_lib_containers_ranges |
202202L |
(C++23) | 容器的范围构造和插入 |
__cpp_lib_constexpr_containers |
202502L |
(C++26) | constexpr std::multimap |
[编辑] 示例
本节尚不完整 原因:没有示例 |
[编辑] 缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的 C++ 标准。
DR | 应用于 | 已发布行为 | 正确行为 |
---|---|---|---|
LWG 230 | C++98 | Key 未被要求为 CopyConstructible( Key 类型的键可能无法构造) |
Key 也被要求为 CopyConstructible |
[编辑] 参见
键值对的集合,按键排序,键是唯一的 (类模板) | |
(C++11) |
键值对的集合,按键哈希 (类模板) |
(C++23) |
适配两个容器以提供键值对的集合,按键排序 (类模板) |