std::multimap
在标头 <map> 定义
|
||
template< class Key, |
(1) | |
namespace pmr { template< |
(2) | (C++17 起) |
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
|
指向 value_type 的老式双向迭代器 (LegacyBidirectionalIterator) | ||||
const_iterator
|
指向 const value_type 的老式双向迭代器 (LegacyBidirectionalIterator) | ||||
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) |
擦除所有满足特定判别标准的元素 (函数模板) |
推导指引 |
(C++17 起) |
注解
功能特性测试宏 | 值 | 标准 | 功能特性 |
---|---|---|---|
__cpp_lib_containers_ranges |
202202L | (C++23) | 容器的范围构造和插入 |
示例
本节未完成 原因:暂无示例 |
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 230 | C++98 | Key 不需要满足可复制构造 (CopyConstructible) (因此不保证能构造 Key 类型的键)
|
Key 也需要满足可复制构造 (CopyConstructible) |
参阅
键值对的集合,按照键排序,键是唯一的 (类模板) | |
(C++11 起) |
键值对的集合,按照键生成散列 (类模板) |
(C++23) |
适配两个容器以提供按键排序的键值对集合 (类模板) |