C++ 参考手册
- C++11
- C++14
- C++17
- C++20
- C++ 编译器支持情况表
- 独立与宿主实现
- C++ 语言
- C++ 关键词
- 预处理器
- C++ 标准库头文件
- 具名要求
- C++ 具名要求: 函数对象 (FunctionObject)
- C++ 具名要求: 二元谓词 (BinaryPredicate)
- C++ 具名要求: 可默认构造 (DefaultConstructible)
- C++ 具名要求: 可复制赋值 (CopyAssignable)
- C++ 具名要求: 可复制构造 (CopyConstructible)
- C++ 具名要求: 可移动赋值 (MoveAssignable) (C++11 起)
- C++ 具名要求: 可移动构造 (MoveConstructible) (C++11 起)
- C++ 具名要求: 可析构 (Destructible)
- C++ 具名要求: 可平凡复制 (TriviallyCopyable)
- C++ 具名要求: 可相等比较 (EqualityComparable)
- C++ 具名要求: 可小于比较 (LessThanComparable)
- C++ 具名要求: 比较 (Compare)
- C++ 具名要求: 字面类型 (LiteralType)
- C++ 具名要求: 简旧数据类型 (PODType)
- C++ 具名要求: 平凡类型 (TrivialType)
- C++ 具名要求: 标准布局类型 (StandardLayoutType)
- C++ 具名要求: 遗留向前迭代器 (LegacyForwardIterator)
- C++ 具名要求: 可交换 (Swappable)
- C++ 具名要求: 值可交换 (ValueSwappable)
- C++ 具名要求: 可空指针 (NullablePointer) (C++11 起)
- C++ 具名要求: 散列 (Hash)
- C++ 具名要求: 分配器 (Allocator)
- C++ 具名要求: 可调用 (Callable)
- C++ 具名要求: 谓词 (Predicate)
- C++ 具名要求: 容器 (Container)
- C++ 具名要求: 序列容器 (SequenceContainer)
- C++ 具名要求: 连续容器 (ContiguousContainer)
- C++ 具名要求: 可逆容器 (ReversibleContainer)
- C++ 具名要求: 关联容器 (AssociativeContainer)
- C++ 具名要求: 具分配器容器 (AllocatorAwareContainer)
- C++ 具名要求: 无序关联容器 (UnorderedAssociativeContainer)
- C++ 具名要求: 可默认插入 (DefaultInsertable)
- C++ 具名要求: 可复制插入 (CopyInsertable)
- C++ 具名要求: 可移动插入 (MoveInsertable) (C++11 起)
- C++ 具名要求: 可就位构造 (EmplaceConstructible) (C++11 起)
- C++ 具名要求: 可擦除 (Erasable)
- C++ 具名要求: 遗留迭代器 (LegacyIterator)
- C++ 具名要求: 遗留输出迭代器 (LegacyOutputIterator)
- C++ 具名要求: 遗留输入迭代器 (LegacyInputIterator)
- C++ 具名要求: 遗留双向迭代器 (LegacyBidirectionalIterator)
- C++ 具名要求: 遗留随机访问迭代器 (LegacyRandomAccessIterator)
- C++ 具名要求: 遗留连续迭代器 (LegacyContiguousIterator)
- C++ 具名要求: 常量表达式迭代器 (ConstexprIterator)
- C++ 具名要求: 有格式输入函数 (FormattedInputFunction)
- C++ 具名要求: 无格式输入函数 (UnformattedInputFunction)
- C++ 具名要求: 有格式输出函数 (FormattedOutputFunction)
- C++ 具名要求: 无格式输出函数 (UnformattedOutputFunction)
- C++ 具名要求: 种子序列 (SeedSequence)
- C++ 具名要求: 随机数引擎 (RandomNumberEngine)
- C++ 具名要求: 随机数分布 (RandomNumberDistribution)
- C++ 具名要求: 均匀随机位生成器 (UniformRandomBitGenerator)
- C++ 具名要求: 随机数引擎适配器 (RandomNumberEngineAdaptor)
- C++ 具名要求: 基本可锁定 (BasicLockable)
- C++ 具名要求: 可锁定 (Lockable)
- C++ 具名要求: 可定时锁定 (TimedLockable)
- C++ 具名要求: 互斥体 (Mutex)
- C++ 具名要求: 定时互斥体 (TimedMutex)
- C++ 具名要求: 共享互斥体 (SharedMutex)
- C++ 具名要求: 共享定时互斥体 (SharedTimedMutex)
- C++ 具名要求: 字符特征 (CharTraits)
- C++ 具名要求: 正则表达式特征 (RegexTraits)
- C++ 具名要求: 位掩码类型 (BitmaskType)
- C++ 具名要求: 数值类型 (NumericType)
- C++ 具名要求: 一元类型特征 (UnaryTypeTrait)
- C++ 具名要求: 二元类型特征 (BinaryTypeTrait)
- C++ 具名要求: 变换特征 (TransformationTrait)
- C++ 具名要求: 时钟 (Clock)
- C++ 具名要求: 平凡时钟 (TrivialClock)
- 注释
- 功能特性测试 (C++20)
- 工具库
- 类型支持(基本类型、RTTI、类型特性)
- 概念库 (C++20)
- 错误处理
- 动态内存管理
- 日期和时间工具
- 字符串库
- 容器库
- 迭代器库
- 范围库 (C++20)
- 算法库
- 数值库
- 输入/输出库
- 文件系统库
- 本地化库
- 正则表达式库
- 原子操作库
- 线程支持库
- 实验性 C++ 特性
- 有用的资源
- 索引
- std 符号索引
- 协程支持 (C++20)
- C++ 关键词
C++ 具名要求: 关联容器 (AssociativeContainer)
关联容器 (AssociativeContainer) 是提供基于键的快速对象查找的容器 (Container) 。
要求
凡例 | |
X
|
容器类型 |
a
|
X 类型的值
|
a2
|
其结点句柄与 X 兼容的 Y 类型的值
|
b
|
X 类型的可能为 const 的值
|
u
|
任意变量名 |
a_uniq
|
(当 X 支持唯一键时)X 类型的值
|
a_eq
|
(当 X 支持多重键时)X 类型的值
|
a_tran
|
(当 X::key_compare::is_transparent 存在时)X 类型的可能为 const 的值
|
i , j
|
遗留输入迭代器 (LegacyInputIterator) ,指代有效范围并指向可隐式转换到 X::value_type 的元素
|
p
|
指向 a 的有效常迭代器
|
q
|
指向 a 的有效可解引用常量迭代器
|
r
|
指向 a 的可解引用迭代器
|
q1 , q2
|
指代 a 中的有效范围的常迭代器
|
il
|
std::initializer_list<X::value_type> 类型的对象 |
t
|
X::value_type 类型的值
|
k
|
X::key_type 类型的值
|
c
|
X::key_compare 类型的可以为 const 的值
|
kl
|
一个值,使得 a 依据 c(r,kl) 已划分,其中 r 是 e 的键且 e 在 a 中
|
ku
|
一个值,使得 a 依据 !c(ku, r) 已划分
|
ke
|
一个值,使得 a 依据 c(r, ke) 与 !c(ke, r) 已划分,其中 c(r, ke) 隐含 !c(ke, r)
|
A
|
X 所用的存储分配器,或 std::allocator_type<X::value_type>
|
m
|
分配器,其类型可转换为 A
|
nh
|
X::node_type 类型的非 const 右值
|
表达式 | 返回类型 | 前条件/要求 | 后条件/效果 | 复杂度 |
---|---|---|---|---|
X::key_type | Key |
Key 可析构 (Destructible) |
编译时 | |
X::key_compare | Compare |
编译时 | ||
X::value_compare | 满足二元谓词 (BinaryPredicate) 的类型 | 对于 std::set 和 std::multiset 为 key_compare; 对于 std::map 和 std::multimap 为 Key 上的顺序关系 |
编译时 | |
X(c), X a(c); | key_compare 可复制构造 (CopyConstructible) | 以 c 的副本为 key_comp 构造空容器 |
常数 | |
X(), X a; | key_compare 可复制构造 (CopyConstructible) | 以 Compare() 为 key_comp 构造空容器 |
常数 | |
X(i, j, c), X a(i, j, c); | key_compare 可复制构造 (CopyConstructible) 且 value_type 从 *i 可就位构造 (EmplaceConstructible) 到 X | 以 c 的副本为 key_comp 构造空容器并插入来自范围 [i; j) 的所有元素 |
通常为 N log N ,或若 [i, j) 已排序则为 N (其中 N 是 std::distance(i, j))
| |
X(i, j), X a(i, j); | key_compare 可复制构造 (CopyConstructible) 且 value_type 从 *i 可就位构造 (EmplaceConstructible) 到 X | 以 Compare() 为 key_comp 构造空容器并插入来自范围 [i; j) 的所有元素 |
通常为 N log N ,或若 [i, j) 已按照 value_comp() 排序则为 N (其中 N 是 std::distance(i, j))
| |
X(il); | 等价于 X(il.begin(), il.end()); | 等价于 X(il.begin(), il.end()); | ||
a = il | X& | T 可复制插入 (CopyInsertable) 到 X 而且亦可复制赋值 (CopyAssignable) |
将范围 [il.begin(), il.end()) 赋值到 a 。 a 的未被赋值元素均被销毁 |
通常为 N log N ,或若 [il.begin(), il.end()) 已按照 value_comp() 排序则为 N (其中 N 是 il.size() + a.size())
|
a.key_comp() | X::key_compare | 返回构造 a 所用的比较对象。 |
常数 | |
a.value_comp() | X::value_compare | 返回在比较对象外构造的 X::value_compare 类型的对象。 | 常数 |
作为 std::map
或 std::multimap
的关联容器 X
额外支持表达式 X::mapped_type
,它以 T 为返回的类型(但要求 T
可析构 (Destructible) ),及编译时复杂度。
本节未完成 原因:完成要求。 |
标准库中的关联容器
唯一键的集合,按照键排序 (类模板) | |
键的集合,按照键排序 (类模板) | |
键值对的集合,按照键排序,键是唯一的 (类模板) | |
键值对的集合,按照键排序 (类模板) |