std::flat_multiset
来自 cppreference.com
在头文件 <flat_set> 中定义 |
||
template< class Key, |
(自 C++23 起) | |
扁平多重集是一个 容器适配器,它提供了关联容器的功能,该容器存储类型为 Key
的已排序集合。与 std::flat_set 不同,允许具有相同值的多个键。排序使用键比较函数 Compare
进行。
类模板 flat_multiset
充当对作为类型 KeyContainer
对象传递的底层排序容器的包装器。
在标准库中使用 Compare 要求的任何地方,唯一性都通过使用等价关系来确定。非正式地,如果两个对象 a 和 b 不相互比较小于,则它们被认为是等价的: !comp(a, b) && !comp(b, a).
std::flat_multiset
满足 Container、ReversibleContainer、可选容器要求 以及所有 AssociativeContainer 的要求(包括对数搜索复杂度),但除了以下几点
- 与节点相关的要求不适用,
- 迭代器失效要求不同,
- 插入和擦除操作的复杂度是线性的。
扁平多重集支持大多数使用相等键的 AssociativeContainer 的操作。
内容 |
[编辑] 迭代器失效
本节内容不完整 |
[编辑] 模板参数
Key | - | 存储元素的类型。如果 Key 与 KeyContainer::value_type 不是相同类型,则程序格式不正确。 |
Compare | - | 提供严格弱排序的 Compare 类型。 |
KeyContainer | - | 存储元素的底层 SequenceContainer 的类型。此类容器的迭代器应满足 LegacyRandomAccessIterator 或模拟 random_access_iterator 。标准容器 std::vector 和 std::deque 满足这些要求。 |
[编辑] 成员类型
成员类型 | 定义 |
container_type
|
Key Container |
key_type
|
Key |
value_type
|
Key |
key_compare
|
Compare |
value_compare
|
Compare |
reference
|
value_type& |
const_reference
|
const value_type& |
size_type
|
typename KeyContainer::size_type |
difference_type
|
typename KeyContainer::difference_type |
iterator
|
实现定义的 LegacyRandomAccessIterator 和 random_access_iterator 到 value_type |
const_iterator
|
实现定义的 LegacyRandomAccessIterator 和 random_access_iterator 到 const value_type |
reverse_iterator
|
std::reverse_iterator<iterator> |
const_reverse_iterator
|
std::reverse_iterator<const_iterator> |
[edit] 成员对象
成员名称 | 定义 |
c (私有) |
container_type 的底层容器(仅供说明的成员对象*) |
compare (私有) |
类型为 key_compare 的比较函数对象(仅供说明的成员对象*) |
[edit] 成员函数
构造 flat_multiset (公共成员函数) | |
(析构函数) (隐式声明) |
销毁容器适配器中的每个元素 (公共成员函数) |
为容器适配器赋值 (公共成员函数) | |
迭代器 | |
返回指向开头的迭代器 (公共成员函数) | |
返回指向结尾的迭代器 (公共成员函数) | |
返回指向开头的反向迭代器 (公共成员函数) | |
返回指向结尾的反向迭代器 (公共成员函数) | |
容量 | |
检查容器适配器是否为空 (公共成员函数) | |
返回元素数量 (公共成员函数) | |
返回最大可能的元素数量 (公共成员函数) | |
修饰符 | |
就地构造元素 (公共成员函数) | |
使用提示就地构造元素 (公共成员函数) | |
插入元素 (公共成员函数) | |
插入一系列元素 (公共成员函数) | |
提取底层容器 (公共成员函数) | |
替换底层容器 (公共成员函数) | |
删除元素 (公共成员函数) | |
交换内容 (公共成员函数) | |
清除内容 (公共成员函数) | |
查找 | |
查找具有特定键的元素 (公共成员函数) | |
返回与特定键匹配的元素数量 (公共成员函数) | |
检查容器是否包含具有特定键的元素 (公共成员函数) | |
返回指向第一个不小于给定键的元素的迭代器 (公共成员函数) | |
返回指向第一个大于给定键的元素的迭代器 (公共成员函数) | |
返回与特定键匹配的元素范围 (公共成员函数) | |
观察者 | |
返回比较键的函数 (公共成员函数) | |
返回比较类型为 value_type 的对象中的键的函数(公共成员函数) |
[edit] 非成员函数
(C++23) |
按字典顺序比较两个 flat_multiset 的值(函数模板) |
专门化 std::swap 算法 (函数模板) | |
(C++23) |
删除所有满足特定条件的元素 (函数模板) |
[edit] 辅助类
专门化 std::uses_allocator 类型特征 (类模板专门化) |
[edit] 标签
表示范围的元素已排序(不需要唯一性) (标签) |
[edit] 推导指南
[edit] 注释
成员类型 iterator
和 const_iterator
可能是同一个类型的别名。这意味着使用这两个类型作为参数类型的函数重载对可能会违反 单定义规则。由于 iterator
可转换为 const_iterator
,因此可以使用具有 const_iterator
作为参数类型的单个函数。
功能测试 宏 | 值 | Std | 功能 |
---|---|---|---|
__cpp_lib_flat_set |
202207L | (C++23) | std::flat_set 和 std::flat_multiset |
[edit] 示例
本节内容不完整 原因: 没有示例 |
[edit] 另请参阅
(C++23) |
将容器适配为提供按键排序的唯一键集合 (类模板) |
按键排序的键集合 (类模板) | |
(C++11) |
键的集合,按键散列 (类模板) |