[英]How to define number of bits to generate using independent_bits_engine?
Independent_bits_engine是模板类
template<
class Engine,
std::size_t W,
class UIntType
> class independent_bits_engine;
第二个参数定义了需要生成多少位。 我不知道 我想在运行时向用户问这个问题。 怎么了
你不能。 模板参数必须在编译时定义。
要变通解决此问题,您可以查看此帖子并回答: 在运行时指定模板参数
这个想法是使用if
语句来检查运行时值:
template<class Engine, class UIntType>
independent_bits_engine CreateEngine(std::size_t w) {
if (w == 0) {
return independent_bits_engine<Engine, 0, UIntType>();
} else if (w == 1) {
return independent_bits_engine<Engine, 1, UIntType>();
}
Etc;
}
如果W
可以是一个很大的值,则可能要使用boost::preprocessor
生成ifs(链接中给出的示例)。
请注意, W
的最大值越大,实例化的independent_bits_engine
类就越多,编译的速度就越慢,因此您可能要改用完整的运行时解决方案。
就像MICRO一样,c ++模板在编译时进行了扩展: c ++模板说明Wikipedia
当您运行c ++程序时,模板参数已经确定。
因此,如果您坚持使用模板来实现dependent_bits_engine,则必须删除模板参数std :: size_tW。并且可以在运行时将大小参数传递给Independent_bits_engine对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.