Sto praticando l'uso di oggetti immutabili in C ++. Il mio obiettivo personale è rappresentare un oggetto generico (in heap) con una sequenza di grafici immutabili.
Costruire il grafico multi-versione in sé non è poi così difficile. Il problema è la prestazione. Il versioning della forza bruta richiede una copia completa del grafico e questo non era accettabile.
Ho provato a condividere nodi invariati. Ma in questo caso, ho avuto un nuovo problema; Riferimenti. Il riferimento ad altro oggetto deve essere aggiornato nell'intero grafico. Questo ha bisogno di visitare tutti i nodi ogni volta che ne ricavo una nuova versione del grafico. E questo muta i nodi con riferimenti, quindi dovrebbero anche essere derivati (copiando). Le prestazioni non saranno migliori della copia a forza bruta.
Per quanto posso immaginare, non esiste un modo efficace per rappresentare la mutazione del grafico a oggetti con stati immutabili. Quindi sto chiedendo qualche idea su questo.
È possibile rappresentare in modo efficiente la mutazione del grafico a oggetti con stato immutabile?