std:: multiset
|
定义于头文件
<set>
|
||
|
template
<
class
Key,
|
(1) | |
|
namespace
pmr
{
template
<
|
(2) | (C++17 起) |
std::multiset
是一种关联容器,包含一组已排序的 Key 类型对象。与 set 不同,允许存在多个具有等效值的键。排序通过键比较函数 Compare 实现。搜索、插入和删除操作具有对数复杂度。
凡是标准库使用 Compare 要求的地方,等价性均通过 Compare 中描述的等价关系来确定。用不严格的说法来说,两个对象 a 和 b 被认为是等价的,当且仅当两者互不小于对方: ! comp ( a, b ) && ! comp ( b, a ) 。
|
比较等价的元素顺序即为插入顺序,且不会改变。 |
(since C++11) |
std::multiset
满足
Container
、
AllocatorAwareContainer
、
AssociativeContainer
及
ReversibleContainer
的要求。
std::multiset
的所有成员函数均为
constexpr
:可以在常量表达式求值过程中创建和使用
std::multiset
对象。
但
|
(since C++26) |
目录模板参数
成员类型
成员函数
观察器 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 返回比较键的函数 (公开成员函数) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
返回函数比较键在对象类型为 value_type (公开成员函数) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
非成员函数
|
(C++20 中移除)
(C++20 中移除)
(C++20 中移除)
(C++20 中移除)
(C++20 中移除)
(C++20)
|
按字典序比较两个
multiset
的值
(函数模板) |
|
特化
std::swap
算法
(函数模板) |
|
|
(C++20)
|
擦除所有满足特定条件的元素
(函数模板) |
推导指引 |
(C++17 起) |
注释
成员类型
iterator
和
const_iterator
可能是同一类型的别名。这意味着使用这两种类型作为参数类型来定义一对函数重载可能会违反
单一定义规则
。由于
iterator
可转换为
const_iterator
,改用单个以
const_iterator
作为参数类型的函数即可实现相同功能。
| 功能测试 宏 | 值 | 标准 | 功能 |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | 容器的范围构造与插入 |
__cpp_lib_constexpr_set
|
202502L
|
(C++26) |
constexpr
std::multiset
|
示例
|
本节内容不完整
原因:缺少示例 |
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用标准 | 发布时行为 | 正确行为 |
|---|---|---|---|
| LWG 103 | C++98 | 迭代器允许修改键值 | 迭代器设为常量 |
| LWG 230 | C++98 |
Key
未要求满足
可复制构造
要求
(可能无法构造
Key
类型的键)
|
Key
同时要求
满足 可复制构造 要求 |
参见
|
按键排序的唯一键集合
(类模板) |
|
|
(C++11)
|
通过哈希函数组织的键集合
(类模板) |
|
(C++23)
|
适配容器以提供按键排序的键集合
(类模板) |