Se mi posso permette un consiglio che ti risolve anche il problema della deep copy, e aumenta le prestazioni: non fare array innestati, fallo di profondità uno.
Per esempio, partiamo dalla tua tabella, di dimensione X (3), Y (9), Z(10).
Fai che table sia un array di dimensione 270 (X*Y*Z).
Per accedere all'elemento k, j, n, dovrai accedere
Le performance aumentano alla lettura perché hai un solo array di 270 elementi contigui in memoria, invece che 27 da 10. Inoltre, sarai sicuro che tutto l'array sia in cache (L1/L2/L3), invece che solo alcuni degli array. E spostarsi dentro l'array diventa solo uno shift del puntatore di massimo 270 * size del contenuto, invece che saltare avanti e indietro in praticamente tutta la memoria.
Comunque, se ti interessa l'argomento, internet parla tanto di multidimensional array vs flat array ;-)
E, incidentalmente, risolve il tuo problema
Per esempio, partiamo dalla tua tabella, di dimensione X (3), Y (9), Z(10).
Fai che table sia un array di dimensione 270 (X*Y*Z).
Per accedere all'elemento k, j, n, dovrai accedere
table[k * Y * Z + j * Z + n]
Le performance aumentano alla lettura perché hai un solo array di 270 elementi contigui in memoria, invece che 27 da 10. Inoltre, sarai sicuro che tutto l'array sia in cache (L1/L2/L3), invece che solo alcuni degli array. E spostarsi dentro l'array diventa solo uno shift del puntatore di massimo 270 * size del contenuto, invece che saltare avanti e indietro in praticamente tutta la memoria.
Comunque, se ti interessa l'argomento, internet parla tanto di multidimensional array vs flat array ;-)
E, incidentalmente, risolve il tuo problema