Dus laten we beginnen met de verschillen tussen een dimensie en tweedimensionale array samen met een vergelijkingsgrafiek.
Vergelijkingstabel:
Basis voor vergelijking | One-Dimensional | Twee-dimensionale |
---|---|---|
basis- | Sla een enkele lijst met elementen van hetzelfde gegevenstype op. | Bewaar 'lijst met lijsten' of 'array van arrays' of 'array van eendimensionale arrays'. |
Verklaring | / * verklaring in C ++ type variable_name [size]; * / / * verklaring in Java type variabele naam []; variable_name = nieuw type [grootte]; * / | / * verklaring in C ++ type variable_name [size1] [size2]; * / / * verklaring in Java type variable_name = new int [size1] [size2]; * / |
Alternatieve verklaring | / * In Java int [] a = nieuwe int [10]; * / | / * In Java int [] [] a = nieuw int [10] [20]; * / |
Totale grootte in bytes | Total Bytes = sizeof (datatype van array variable) * size of array. | Totaal bytes = sizeof (datatype van arrayvariabele) * grootte van eerste index * grootte van tweede index. |
Ontvangende parameter | Het kan worden ontvangen in een matrix met aanwijzer, formaat of een niet-gesorteerde array. | Parameterontvangst moet de meest rechtse dimensie van een array definiëren. |
Dimensies | Eén dimensionaal. | Tweedimensionaal. |
Definitie van eendimensionale array (1-D array)
Een-dimensionale of eendimensionale array wordt beschouwd als de "lijst met variabelen van vergelijkbare gegevenstypen" en elke variabele kan duidelijk worden benaderd door de index tussen vierkante haken op te geven, voorafgegaan door de naam van die array.
Laten we bespreken in C ++ -context
// declaratie in C ++ type variable_name [size];
Type hier wordt het gegevenstype van de matrixvariabele verklaard en de grootte definieert het aantal elementen dat in de array wordt bewaard.
Als we bijvoorbeeld een array willen declareren die het saldo van elke maand van het jaar zal bevatten.
// voorbeeld int month_balance [12];
Maand _balans is de array-variabele die de 12 gehele getallen bevat, die het saldo van elke maand zal vertegenwoordigen. Als we nu de balans van maand 'April' willen zien, hoeven we alleen de variabelenaam te vermelden, gevolgd door een vierkante haak met de indexwaarde voor de maand april, dat wil zeggen 'month_balance [3]'. Maar zoals 'April' de vierde maand van het jaar is, maar we hadden '[3]' genoemd omdat alle matrices 0 hebben als de index van hun eerste element.
In Java kan dit als volgt worden gedaan
// declaratie in variabele naam [] van het Java-type; variable_name = nieuw type [grootte];
Hier hadden we aanvankelijk een arrayvariabele met het type gedeclareerd en daarna hadden we het geheugen toegewezen met 'nieuw' en 'nieuw' toegewezen aan de gedeclareerde array-variabele. Laten we het bovenstaande voorbeeld nemen als we een array willen declareren die het saldo in elke maand van het jaar zal bevatten.
// voorbeeld int month_balance []; month_balance = nieuwe int [12];
Hier wijst 'nieuw' geheugen toe aan array-variabele 'month_balance', dus nu houdt mont_balance nu het geheugen voor 12 gehele getallen.
Arrays kunnen worden geïnitialiseerd wanneer ze worden gedeclareerd. Een array-initializer is de lijst met door komma's gescheiden waarden omringd door accolades.
//voorbeeld
int month_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450, 180};
Definitie van tweedimensionale array (2-D array)
Zowel C ++ als Java ondersteunen multidimensionale array. Een van de eenvoudigste vormen van een multidimensionale array is een tweedimensionale matrix of een 2-D array. Een tweedimensionale array kan worden beschouwd als 'array of arrays' of 'array van eendimensionale arrays'. Om de tweedimensionale arrayvariabele te declareren, moeten we de arraynaam opgeven, gevolgd door twee vierkante haken, waarbij de tweede index de tweede set vierkante haken is.
Een tweedimensionale array wordt opgeslagen in de vorm van de rij-kolommatrix, waarbij de eerste index de rij aangeeft en de tweede index de kolom aangeeft. De tweede of meest rechtse index van een array verandert zeer snel in vergelijking met de index van de eerste of meest linkse index bij het openen van de elementen van een array.
// declaratie in C ++ type variable_name [size1] [size2];
We willen bijvoorbeeld het saldo van elke 30 dagen in elke maand van het jaar opslaan in een 2-D-array.
// voorbeeld int month_balance [12] [30];
In Java wordt de tweedimensionale array verkregen door
// declaratie in Java-type variable_name = new int [size1] [size2]; // example int month_balance = new int [12] [30];
Omdat we de hele array niet als parameter kunnen doorgeven aan een functie, wordt een aanwijzer naar het eerste element van de array doorgegeven. Een argument dat de tweedimensionale array ontvangt, moet definiëren dat het de meest rechtse dimensie is. De meest rechtse dimensie is vereist omdat de compiler deze nodig heeft om de lengte van elke rij te bevestigen als deze de array correct wil indexeren. Als de index met de rechter index niet wordt genoemd, kan de compiler niet bepalen waar de volgende rij begint.
// voorbeeld in Java void receiveing_funct (int a [] [10]) {. . . }
Wanneer het geheugen dynamisch wordt toegewezen aan de tweedimensionale array in Java, wordt de meest linkse index opgegeven en kunnen de resterende dimensies afzonderlijk worden toegewezen, dwz dat alle rijen van de array mogelijk niet dezelfde grootte hebben.
// voorbeeld in Java int month_balance = new int [12] []; month_balance [0] = nieuwe int [31]; month_balance [1] = nieuwe int [28]; month_balance [2] = nieuwe int [31]; month_balance [3] = nieuwe int [30]; month_balance [4] = nieuwe int [31]; month_balance [5] = nieuwe int [30]; month_balance [6] = nieuwe int [31]; month_balance [7] = nieuwe int [30]; month_balance [8] = nieuwe int [31]; month_balance [9] = nieuwe int [30]; month_balance [10] = nieuwe int [31]; month_balance [11] = nieuwe int [30]; month_balance [12] = nieuwe int [31];
Maar er is geen voordeel van om dat te doen.
Belangrijkste verschillen tussen eendimensionale en tweedimensionale array
- De eendimensionale array is een lijst waarvan de elementen van een vergelijkbaar datatype zijn. Aan de andere kant is de tweedimensionale array een lijst waarvan de elementen de array van hetzelfde gegevenstype zijn.
- In C ++, wanneer de eendimensionale array wordt ontvangen door de parameter van een ontvangende functie, is het niet nodig om de grootte van de array te vermelden, omdat de compiler begrijpt dat de array van het type (genoemd datatype samen met de parameter) enige lengte heeft moet worden ontvangen. In een tweedimensionale matrix moet de tweede of meest rechtse index worden opgegeven als de compiler moet weten waar een rij eindigt en een nieuwe rij begint.
- In C ++ wordt de eendimensionale array opgeslagen in een aangrenzende geheugenlocatie in de geïndexeerde volgorde, terwijl de tweedimensionale array ook wordt opgeslagen in de aangrenzende geheugenlocatie, maar omdat er meerdere rijen zijn in een tweedimensionale array, is opslag van een eerste rij wordt gevolgd door een tweede en de derde rij enzovoort.
Notitie:
Het passeren van beide, eendimensionale array en tweedimensionale array naar een functie is vergelijkbaar, dwz beide worden alleen doorgegeven door de naam van array
// example passing_funt (naam_van_array);
Conclusie:
In zowel een eendimensionale als tweedimensionale array speelt de index een zeer belangrijke rol omdat deze het enige is dat specifiek een element in de array identificeert. Zowel eendimensionale als tweedimensionale reeksen kunnen worden geïnitialiseerd op het moment van hun aangifte.