Estoy practicando el uso de objetos inmutables en C ++. Mi objetivo personal es representar un gráfico de objeto genérico (en montón) con una secuencia de gráficos inmutables.
Construir el gráfico de múltiples versiones en sí no es tan difícil. El problema es el rendimiento. El control de versiones de fuerza bruta necesita una copia completa del gráfico, y esto no era aceptable.
Traté de compartir nodos sin cambios. Pero en este caso, tengo un nuevo problema; referencias La referencia a otro objeto debe actualizarse en todo el gráfico. Esto necesita visitar todos los nodos cada vez que obtengo una nueva versión del gráfico. Y esto muta los nodos con referencias, por lo que también deben derivarse (copiando). El rendimiento no será mejor que la copia con fuerza bruta.
Por lo que puedo imaginar, no hay una forma realmente eficiente de representar la mutación del gráfico de objetos con estados inmutables. Entonces, estoy pidiendo alguna idea sobre esto.
¿Es posible representar la mutación del gráfico de objeto de manera eficiente con un estado inmutable?