02/05/12 15:18
mg
Quale è il modo migliore per ridimensionare una matrice a più dimensioni?
e.g A(3,7) --> A(4,7).
I diversi modi che ho visto fanno sempre riferimento a matrici monodimensionali. L'unica possibilità è salvare la matrice A in Atmp, ridefinire A e copiare gli elementi di Atmp nella nuova A tramite un ciclo for?
grazie per l'attenzione
Marco
aaa
04/05/12 7:10
mg
riferendomi a questo link
stackoverflow.com/questions/6539571/…
in cui è ben spiegato il comportamento di copy per array multidimensionali ed è proposta una soluzione al mio problema riporto una possibile soluzione:
private void ResizeArray<T>(ref T[,] original, int x, int y)
{
T[,] newArray = new T[x, y];
int minX = Math.Min(original.GetLength(0), newArray.GetLength(0));
int minY = Math.Min(original.GetLength(1), newArray.GetLength(1));
for (int i=0; i<minX;++i) Array.Copy(original, i*original.GetLength(1),newArray,i*newArray.GetLength(1),minY);
original = newArray;
}
Marco
Ultima modifica effettuata da mg 04/05/12 8:08
aaa