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++ 具名要求: 随机数引擎 (RandomNumberEngine)
随机数引擎是函数对象,返回无符号整数值,它使得可能结果范围中的每个值拥有(理想的)相等概率。
任何随机数引擎亦为均匀随机位生成器 (UniformRandomBitGenerator) ,从而可能插入任何随机数分布,以获得随机数(正式而言是随机变量)。
要求
满足均匀随机位生成器 (UniformRandomBitGenerator) 的类型 E
会另外满足随机数引擎 (随机数引擎 (RandomNumberEngine) ) ,若给定
-
T
,E::result_type
所指名的类型 -
s
,T
类型值 -
e
,E
类型的非 const 值 -
v
,E
类型左值 -
x
与y
,E
类型的可能为 const 的值 -
q
,某满足种子序列 (SeedSequence) 的类型的左值 -
z
,unsigned long long
类型值 -
os
,输出流 -
is
,输入流
而下列表达式合法并拥有其指定的效果:
表达式 | 返回类型 | 要求 |
---|---|---|
E() | 创建引擎,其状态与所有其他默认构造的 E 类型引擎相同。
| |
E(x) | 创建引擎,其状态与 x 的相同。
| |
E(s) | 创建引擎,其初始状态为 s 所确定。
| |
E(q) | 创建引擎,其初始状态以单次调用 q.generate 确定。
| |
e.seed() | void
|
设置 e == E() 。 |
e.seed(s) | void
|
设置 e == E(s) 。 |
e.seed(q) | void
|
设置 e == E(q) 。 |
e() | T
|
返回闭区间 [E::min(), E::max()] 中的值。拥有均摊常数复杂度。 |
e.discard(z) | void
|
令 e 的状态前进,如同通过 z 次连续调用 e() 。
|
x == y | bool
|
若 x 与 y 在相同状态(满足将来对 x() 和 y() 的重复调用将产生等同的数列)则为 true 。否则为 false 。
|
x != y | bool
|
!(x == y) |
os << x | decltype(os)& | 将 x 当前状态的文本表示写入 os 。输出中,相邻的数以一或多个空格字符分隔。若 os 的 fmtflags 未设为 ios_base::dec|ios_base::left ,则行为可能未定义。
|
is >> v | decltype(is)& | 从 is 读取 v 当前状态的文本表示,满足若先前通过 os << x 写入该状态,则 x == v 。若 is 的 fmtflags 未设为 ios_base::dec ,则行为可能未定义。
|
标准库
下列标准库设施满足随机数引擎 (随机数引擎 (RandomNumberEngine) ) :
(C++11) |
实现线性同余算法 (类模板) |
(C++11) |
实现梅森缠绕器算法 (类模板) |
(C++11) |
实现带进位减(一种延迟斐波那契)算法 (类模板) |
(C++11) |
舍弃随机数引擎的某些输出 (类模板) |
(C++11) |
将一个随机数引擎的输出打包为指定位数的块 (类模板) |
(C++11) |
以不同顺序发送一个随机数引擎的输出 (类模板) |
下列标准库设施满足均匀随机位生成器 (UniformRandomBitGenerator) 但不满足随机数引擎 (随机数引擎 (RandomNumberEngine) ) :
(C++11) |
使用硬件熵源的非确定随机数生成器 (类) |