Resize

Modifica la dimensione di una matrice o di un vettore.

bool matrix::Resize(
  const ulong  rows,     // 
  const ulong  cols,     // nuovo numero di colonne.
  const ulong  reserve=0 // quantità di riserva in elementi.
   );
 
bool vector::Resize(
  const ulong  size,     // nuova dimensione.
  const ulong  reserve=0 // quantità di riserva in elementi.
   );

Parametri

rows

[in] Nuovo numero di righe.

cols

[in] Nuovo numero di colonne.

Valore Restituito

Restituisce true in caso di successo, altrimenti false.

Note

La matrice (o vettore) viene elaborata sul posto. Non vengono create copie. È possibile specificare qualsiasi dimensione, ad es., rows_new*cols_new!=rows_old*cols_old. A differenza di Reshape, la matrice viene elaborata riga per riga. Quando si aumenta il numero di colonne, i valori delle colonne extra non sono definiti. Quando si aumenta il numero di righe, i valori degli elementi nelle nuove righe non sono definiti. Quando il numero di colonne viene ridotto, ogni riga della matrice viene troncata.

Quando la dimensione della matrice (o del vettore) viene ridotta, la dimensione del buffer per memorizzare i dati della matrice o del vettore non cambia. Se è necessario impostare la dimensione della matrice (o del vettore) a zero e liberare il buffer, usare il metodo Free.

Esempio

   matrix matrix_a={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
   Print("matrix_a\n",matrix_a);
   matrix_a.Resize(2,6);
   Print("Ressize(2,6)\n",matrix_a);
   matrix_a.Resize(3,5);
   Print("Resize(3,5)\n",matrix_a);
   matrix_a.Resize(2,4);
   Print("Resize(2,4)\n",matrix_a);
 
   /*
   matrix_a
   [[1,2,3]
    [4,5,6]
    [7,8,9]
    [10,11,12]]
   Ressize(2,6)
   [[1,2,3,4,5,6]
    [4,5,6,10,11,12]]
   Resize(3,5)
   [[1,2,3,4,5]
    [4,5,6,10,11]
    [11,12,3,8,8]]
   Resize(2,4)
   [[1,2,3,4]
    [4,5,6,10]]
   */