Raccomandato, 2024

Scelta Del Redattore

Differenza tra matrice monodimensionale (2D) e bidimensionale (2D)

Una matrice è una raccolta di variabili che hanno tipi di dati simili e sono riferite da un nome comune. Un particolare elemento di un array è accessibile da un particolare indice di quell'array. Le matrici in Java funzionano in modo diverso rispetto a C ++. L'argomento principale della nostra discussione è la differenza tra array a una dimensione e a due dimensioni. Un array unidimensionale è un elenco di variabili con lo stesso tipo di dati, mentre l'array bidimensionale è "array di matrici" con tipi di dati simili. C ++ non ha un controllo vincolato sugli array mentre, Java ha un severo controllo del vincolo sugli array.

Iniziamo quindi con le differenze tra la matrice a una e due dimensioni insieme a una tabella di confronto.

Grafico comparativo:

Base per il confrontoOne-DimensionalBidimensionale
Di base
Memorizza un singolo elenco di elementi di tipo di dati simile.Memorizza "lista di liste" o "array di matrici" o "array di matrici monodimensionali".
Dichiarazione/ * dichiarazione in C ++
tipo nome_variabile [dimensione]; * /
/ * dichiarazione in Java
digita nome_variabile [];
variable_name = nuovo tipo [dimensione]; * /
/ * dichiarazione in C ++
tipo nome_variabile [size1] [size2]; * /
/ * dichiarazione in Java
tipo variable_name = new int [size1] [size2]; * /
Dichiarazione alternativa/ * In Java
int [] a = new int [10]; * /
/ * In Java
int [] [] a = new int [10] [20]; * /
Dimensione totale in byteByte totali = sizeof (tipo di dati della variabile array) * dimensione dell'array.Byte totali = sizeof (tipo di dati della variabile array) * dimensione del primo indice * dimensione del secondo indice.
Ricezione parametroPuò essere ricevuto in un puntatore, in una matrice di dimensioni o in un array non allineato.Il parametro che lo riceve deve definire la dimensione più a destra di un array.
DimensioniUnidimensionale.Bidimensionale

Definizione di array monodimensionale (array 1-D)

L'array monodimensionale o monodimensionale viene considerato come "elenco di variabili di tipi di dati simili" e ciascuna variabile può essere chiaramente acceduta specificando il suo indice tra parentesi quadre preceduto dal nome di tale matrice.

In C ++, la dichiarazione di una variabile di matrice con dimensioni è sufficiente per allocare spazio per loro in memoria. In Java, questo si ottiene in due passaggi. Innanzitutto, devi dichiarare una variabile del tipo desiderato. In secondo luogo, è necessario allocare la memoria per mantenere l'array usando 'new' e assegnarlo alla variabile array dichiarata. Quindi, gli array sono allocati dinamicamente in Java.

Discutiamo nel contesto C ++

 // dichiarazione in C ++ tipo nome_variabile [dimensione]; 

Qui type dichiara il tipo di dati della variabile array e la dimensione definisce il numero di elementi che la matrice manterrà.

Ad esempio, se vogliamo dichiarare un array che conterrà il saldo di ogni mese dell'anno.

 // esempio int month_balance [12]; 

Month _balance è la variabile array che conterrà i 12 numeri interi, che rappresenteranno il saldo di ogni mese. Ora, se vogliamo accedere al saldo del mese "Aprile", abbiamo semplicemente dovuto menzionare il nome della variabile seguito da una parentesi quadra contenente il valore dell'indice per il mese di aprile, ad esempio "mese_balanza [3]". Ma come "aprile" è il quarto mese dell'anno, ma abbiamo menzionato "[3]" perché tutti gli array hanno 0 come indice del loro primo elemento.

In Java, questo può essere fatto come

 // dichiarazione in tipo Java nome_variabile []; variable_name = nuovo tipo [dimensione]; 

Qui, inizialmente avevamo dichiarato una variabile di matrice con il suo tipo e quindi avevamo allocata memoria usando "nuovo" e assegnando "nuovo" alla variabile di matrice dichiarata. Prendiamo sopra l'esempio se vogliamo dichiarare una matrice che conterrà il saldo in ogni mese dell'anno.

 // esempio int month_balance []; month_balance = new int [12]; 

Qui, 'new' alloca la memoria alla variabile array "month_balance", quindi ora mont_balance conserverà la memoria per 12 valori interi.

Le matrici possono essere inizializzate quando vengono dichiarate. Un inizializzatore di array è l'elenco di valori separati da virgole circondati da parentesi graffe.
//esempio

 int month_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450, 180}; 

Definizione di array bidimensionale (array 2-D)

Sia C ++ che Java supportano array multidimensionali. Una delle forme più semplici di un array multidimensionale è un array bidimensionale o array bidimensionale. Un array bidimensionale può essere considerato come "array di matrici" o "array di matrici monodimensionali". Per dichiarare la variabile di matrice bidimensionale, dobbiamo specificare il nome dell'array seguito da due parentesi quadre dove il secondo indice è il secondo insieme di parentesi quadre.

Una matrice bidimensionale è memorizzata sotto forma di matrice riga-colonna, dove il primo indice indica la riga e il secondo indice indica la colonna. Il secondo o l'indice più a destra di un array cambia molto velocemente rispetto all'indice di prima o di sinistra mentre accede agli elementi di un array.

In C ++, l'array bidimensionale è dichiarato come;

 // dichiarazione in C ++ tipo nome_variabile [size1] [size2]; 

Ad esempio, vogliamo archiviare il saldo di ogni 30 giorni in ogni mese dell'anno, in un array 2-D.

 // esempio int mese_balance [12] [30]; 

In Java, l'array bidimensionale è ottenuto da

 // dichiarazione in tipo Java nome_variabile = nuova int [dimensione1] [dimensione2]; // esempio int month_balance = new int [12] [30]; 

Poiché non è possibile passare l'intero array come parametro a una funzione, viene passato un puntatore al primo elemento dell'array. Un argomento che riceve l'array bidimensionale deve definire che è la dimensione più a destra. La dimensione più a destra è necessaria perché il compilatore ne ha bisogno, per confermare la lunghezza di ogni riga se vuole indicizzare l'array correttamente. Se l'indice più a destra non viene menzionato, il compilatore non può determinare da dove inizia la riga successiva.

 // esempio in Java void receiveing_funct (int a [] [10]) {. . . } 

Quando la memoria viene allocata dinamicamente alla matrice bidimensionale in Java, viene specificato l'indice più a sinistra e le dimensioni rimanenti possono essere allocate separatamente, ovvero tutte le righe dell'array potrebbero non avere la stessa dimensione.

 // esempio in Java int month_balance = new int [12] []; month_balance [0] = new int [31]; month_balance [1] = new int [28]; month_balance [2] = new int [31]; month_balance [3] = new int [30]; month_balance [4] = new int [31]; month_balance [5] = new int [30]; month_balance [6] = new int [31]; month_balance [7] = new int [30]; month_balance [8] = new int [31]; month_balance [9] = new int [30]; month_balance [10] = new int [31]; month_balance [11] = new int [30]; month_balance [12] = new int [31]; 

Ma non c'è alcun vantaggio nel farlo.

Differenze chiave tra matrice monodimensionale e bidimensionale

  1. L'array unidimensionale è un elenco i cui elementi sono di tipo di dati simile. D'altra parte, la matrice bidimensionale è una lista i cui elementi sono la matrice di un tipo di dati simile.
  2. In C ++, quando l'array unidimensionale viene ricevuto dal parametro di una funzione ricevente, non è necessario menzionare la dimensione dell'array in quanto, il compilatore comprende che l'array del tipo (tipo di dati menzionato insieme al parametro) con una certa lunghezza deve essere ricevuto In un array bidimensionale, è necessario specificare il secondo o indice più a destra in quanto il compilatore deve sapere dove inizia una singola riga di fine e una nuova riga.
  3. In C ++, l'array unidimensionale viene archiviato in una posizione di memoria contigua nell'ordine indicizzato, mentre l'array bidimensionale viene anche memorizzato nella posizione di memoria contigua, ma poiché vi sono più righe in un array bidimensionale, l'archiviazione di una prima fila è seguita da una seconda e la terza e così via.

Nota:

Il passaggio sia dell'array monodimensionale sia dell'array bidimensionale a una funzione, ovvero entrambi vengono passati solo dal nome dell'array

 // esempio passing_funt (name_of_array); 

Conclusione:

Nell'array sia monodimensionale che bidimensionale, l'indice svolge un ruolo molto importante perché è l'unica cosa che identifica in modo specifico un elemento nell'array. Al momento della dichiarazione, è possibile inizializzare sia la matrice monodimensionale che quella bidimensionale.

Top