Sto praticando l'uso di oggetti immutabili in C ++. Il mio obiettivo personale è rappresentare un oggetto grafico generico (in heap) con una sequenza di grafici immutabili.
Costruire il grafico multi-versione non è molto difficile. Il problema è la prestazione. Il controllo delle versioni a 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 altri oggetti deve essere aggiornato nel grafico intero. Questo richiede di visitare tutti i nodi ogni volta che ricavo una nuova versione del grafico. E questo muta i nodi con riferimenti, quindi dovrebbero anche essere derivati (copiando). Le prestazioni non saranno migliori rispetto alla copia a forza bruta.
Per quanto posso immaginare, non esiste un modo veramente efficace per rappresentare la mutazione del grafo degli oggetti con stati immutabili. Quindi ti sto chiedendo un'idea su questo.
È possibile rappresentare la mutazione del grafico dell'oggetto in modo efficiente con lo stato immutabile?