C++ 命名要求
RandomNumberEngineAdaptor (自 C++11 起)
一个 RandomNumberEngineAdaptor 是一个 RandomNumberEngine,它转换另一个 RandomNumberEngine 的输出,后者被称为基础引擎。
要求
给定
B
,一个 RandomNumberEngineb
,一个类型为 B 的对象A
,一个 RandomNumberEngineAdaptor,以 B 作为基础引擎a
,一个类型为 A 的对象
函数 | 语义 |
---|---|
A::A(); | 基础引擎的初始化如同通过其默认构造函数。 |
bool operator==(const A& lhs, const A& rhs); | 返回 lhs 的基础引擎是否等于 rhs 的基础引擎。 |
A::A(result_type s); | 基础引擎用 s 初始化。 |
template<class Sseq> A::A(Sseq& q); | 基础引擎用 q 初始化。 |
void seed(); | 调用 b.seed() 。 |
void seed(result_type s); | 调用 b.seed(s) 。 |
template<class Sseq> void seed(Sseq& q); | 调用 b.seed(q) 。 |
此外
- A 的每个函数的复杂度不超过 B 的函数的复杂度
- A 的状态包括 B 的状态
- A 的状态大小不小于
b
的大小 - 复制 A 的状态包括复制 B 的状态
- A 的文本表示包括 B 的文本表示
标准库
以下标准库设施满足 RandomNumberEngineAdaptor
pub | discard_block_engine(C++11) | 丢弃随机数引擎的一些输出 |
pub | independent_bits_engine(C++11) | 将随机数引擎的输出打包成指定位数的数据块 |
pub | shuffle_order_engine(C++11) | 以不同顺序提供随机数引擎的输出 |