假设我在C ++中有一个default_random_engine
,他生成的值是否有一个类型?如果有,可以做类似的事情
sum = sum + generator;
并假设sum
具有预定义类型
答案 0 :(得分:1)
default_random_engine是否有类型?
是。它是其他引擎之一的typedef。
§26.5.5
备注:此typedef命名的引擎类型的选择是实现定义的。 [注意: 实现可以基于性能,大小,质量或任何组合来选择这种类型 这些因素,以便为相对随意,不熟练和/或提供至少可接受的发动机行为 轻量级使用。因为不同的实现可以选择不同的底层引擎类型,代码 使用此typedef不需要跨实现生成相同的序列。 - 结束说明]
所有随机引擎都会导出类型Engine::result_type
,这是Engine::result_type Engine::operator()
的返回类型。
result_type
是UIntType
的typedef,它是第一个模板参数。
e.g:
std::mersenne_twister_engine<std::uint_fast32_t,
32, 624, 397, 31,
0x9908b0df, 11,
0xffffffff, 7,
0x9d2c5680, 15,
0xefc60000, 18, 1812433253>
operator()
的返回类型为std::uint_fast32_t
。