如何使用 Boost 序列化 mersenne_twister_engine?

How can a mersenne_twister_engine be serialized using Boost?

我有一个实现 std::mt19937 的 class,我希望能够保存和加载随机数生成器的状态以保持一致性。我知道 << 和 >> 运算符可用于 save/load 引擎的状态,并且我可以在必要时存档文件时将保存和加载功能分开。我对如何做到这一点的猜测是使用 << 和 >> 运算符来存储状态 into/extract 来自可以序列化的对象的状态。我的问题是

  1. 什么对象可以用来存储 mersenne_twister_engine 也可以使用 Boost 序列化的状态?
  2. 我的方法是否安全并且通常被认为是好的做法?
  3. 是否有一种通常被认为更好的方法?

关于输出运算符来自this output/input operator reference

Serializes the internal state of the pseudo-random number engine e as a sequence of decimal numbers separated by one or more spaces, and inserts it to the stream ost.

流可以是任何类型的输出流,例如 output string stream。然后您可以使用字符串流创建的字符串并将其传递给您需要的任何序列化框架。

或者如果序列化框架支持直接output/input流操作,您可以直接与引擎运算符一起使用。