我有一个名为Solution
定义如下的类。我只包含了相关代码,并没有编写自定义复制或赋值运算符。
class Solution {
public:
Solution() {
stream.setNewSeed(seedShift+static_cast<long>(12345));
++seedShift;
}
RandomNumberStream stream;
private:
static long seedShift = 0;
};
这里的重点是我希望每个新实例Solution
都有不同的随机数流。这行得通。
然而,问题是在某些地方我Solution
从 a复制一个实例std::vector<Solution>
,稍微修改它,然后将副本推送到同一个std::vector<Solution>
. 发生这种情况时,我有两个Solution
具有相同随机数种子的实例,灾难随之而来。
如何使stream.setNewSeed(seedShift+static_cast<long>(12345));
and++seedShift;
语句在Solution
推送到向量上的复制实例中运行?