Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET -
Forum - C# / VB.NET - "Preserve" di matrice a più dimensioni

Avatar
mg (Normal User)
Rookie


Messaggi: 39
Iscritto: 19/11/2009

Segnala al moderatore
Postato alle 17:18
Mercoledì, 02/05/2012

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



GIo e MAti - una sola parola: fantastici
PM Quote
Avatar
mg (Normal User)
Rookie


Messaggi: 39
Iscritto: 19/11/2009

Segnala al moderatore
Postato alle 9:10
Venerdì, 04/05/2012
riferendomi a questo link http://stackoverflow.com/questions/6539571/how-to-resize-m ...
in cui è ben spiegato il comportamento di copy per array multidimensionali ed è proposta una soluzione al mio problema riporto una possibile soluzione:

Codice sorgente - presumibilmente C++

  1. private void ResizeArray<T>(ref T[,] original, int x, int y)
  2.         {
  3.             T[,] newArray = new T[x, y];
  4.             int minX = Math.Min(original.GetLength(0), newArray.GetLength(0));
  5.             int minY = Math.Min(original.GetLength(1), newArray.GetLength(1));
  6.             for (int i=0; i<minX;++i) Array.Copy(original, i*original.GetLength(1),newArray,i*newArray.GetLength(1),minY);
  7.             original = newArray;
  8.         }



Marco

Ultima modifica effettuata da mg il 04/05/2012 alle 10:08



GIo e MAti - una sola parola: fantastici
PM Quote