我正在练习在C ++中使用不可变对象。我的个人目标是用不可变图序列表示通用对象图(在堆中)。
构建多版本图本身并不难。问题是性能。蛮力版本控制需要图形的完整副本,这是不可接受的。
我试图共享不变的节点。但是在这种情况下,我遇到了一个新问题。参考。对其他对象的引用必须在整个图中进行更新。每次派生新图版本时,都需要访问所有节点。并且这会使带有引用的节点发生变异,因此也应该派生它们(通过复制)。性能不会比暴力复制更好。
据我所能想象,没有真正有效的方法来表示具有不变状态的对象图的突变。因此,我希望对此有所想法。
是否可以用不变状态有效地表示对象图的变化?