Estou praticando o uso de objetos imutáveis em C ++. Meu objetivo pessoal é representar um gráfico genérico de objetos (em heap) com uma sequência de gráficos imutáveis.
Construir o gráfico de várias versões em si não é tão difícil. O problema é desempenho. O controle de versão de força bruta precisa de cópia completa do gráfico, e isso não era aceitável.
Tentei compartilhar nós inalterados. Mas neste caso, eu tenho um novo problema; referências. A referência a outro objeto deve ser atualizada no gráfico inteiro. Isso precisa visitar todos os nós para cada vez que der uma nova versão gráfica. E isso modifica os nós com referências, portanto eles também devem ser derivados (copiando). O desempenho não será melhor do que a cópia em força bruta.
Tanto quanto posso imaginar, não existe uma maneira realmente eficiente de representar a mutação do gráfico de objetos com estados imutáveis. Então, eu estou pedindo uma idéia sobre isso.
É possível representar a mutação do gráfico de objetos eficientemente com o estado imutável?