如何将升压随机数生成器的状态存储为常量字符 *
How to store the state of boost random number generator as const char *?
我很难弄清楚如何创建生成器内部状态的内存缓冲区以用于 c 样式代码。 我无法存储对象,因此我需要在编译时知道生成器状态的大小。 除了这个提升随机标题之外,我不能使用任何与提升相关的内容。 我必须坚持使用stl的东西。 我尝试使用字符串流,但它在遇到空字符后停止。 如果我必须编写一个自定义流缓冲区,它需要在下面的函数中内联,我只是不确定该怎么做。我的目标是将随机数生成器状态存储在 c 结构的恒定大小内存块中。 我发现的最简单的解决方案是用具有易于识别的数组大小的 mersenne twister 算法的 c 实现替换 boost。
static boost::mt19937 rngEngine;
static boost::variate_generator<boost::mt19937&, boost::uniform_int<> > generator(rngEngine, boost::uniform_int<>(0, INT_MAX));
const char * getState(void) {
std::ostringstream content;
content << rngEngine;
return content.str().data();
}
从 getState
函数返回一个std::string
,它将具有size
(或C++03中的length
)和嵌入的' '
字符。
编写的代码是未定义的行为,因为const char*
比产生它的字符串寿命更长。
相关文章:
- 如何为静态常量模板化专用整数值分配存储
- 常量参数存储在哪里 (C++)?
- 如何在可执行文件中存储常量数组?
- 具有静态存储持续时间的常量初始化变量的初始化顺序
- 有没有办法在类实例中存储编译时常量?
- c++ 类中的静态常量变量和常量变量在存储方面是否有区别
- 如何最好地初始化和存储常量对象
- 在不同翻译单元中具有静态存储持续时间的依赖非局部常量浮点变量的常量初始化
- 在 c++ 中存储文本常量
- std::to_string 存储在常量字符*中
- c++中用于常量数据的内存存储
- 常量存储在何处以及如何存储
- 传递给存储常量引用的成员的临时对象的生存期
- 如何将升压随机数生成器的状态存储为常量字符 *
- 其中C++内存中的文字常量存储
- 常量数据存储在哪里
- 如何将常量字符*存储到字符*
- 测试静态常量成员的存储位置
- 存储常量引用参数中的成员变量
- 在c++中存储常量