Så låt oss börja med skillnaderna mellan One-dimension och Two-Dimension array tillsammans med ett jämförelsediagram.
Jämförelsediagram:
Grunder för jämförelse | En-dimensionell | Tvådimensionell |
---|---|---|
Grundläggande | Spara enskild lista över delar av liknande datatyp. | Spara "lista över listor" eller "array array" eller "array of one-dimensional arrays". |
Deklaration | / * deklaration i C ++ skriv variabelnamn [storlek]; * / / * deklaration i Java skriv variabelnamn []; variable_name = ny typ [storlek]; * / | / * deklaration i C ++ skriv variabelnamn [storlek1] [storlek2]; * / / * deklaration i Java skriv variable_name = new int [size1] [size2]; * / |
Alternativ deklaration | / * I Java int [] a = nytt int [10]; * / | / * I Java int [] [] a = nytt int [10] [20]; * / |
Total storlek i byte | Total Bytes = sizeof (datatyp av array variabel) * Storlek på array. | Total Bytes = sizeof (datatyp av array variabel) * Storlek på första index * Storlek på andra index. |
Mottagarparametern | Den kan tas emot i en pekare, en stor grupp eller en osorterad array. | Parametern som tar emot den måste definiera den högsta mängden av en matris. |
Mått | En-dimensionell. | Tvådimensionell. |
Definition av endimensionell array (1-D array)
Endimensionell eller Enfaldig array betraktas som "lista över variabler av likartade datatyper", och varje variabel kan tydligt nås genom att ange sitt index i kvadrat parentes föregås av namnet på den uppsättningen.
Låt oss diskutera i C ++-kontext
// deklaration i C ++ typ variabelnamn [storlek];
Här typ deklarerar datatypen för arrayvariabeln och storleken definierar det antal element som arrayen kommer att hålla.
Till exempel, om vi vill deklarera en matris som kommer att innehålla balansen i varje månad på året.
// exempel int månad_balans [12];
Månad _balance är matrisvariabeln som innehåller 12 heltal, som representerar balansen i varje månad. Om vi nu vill få tillgång till månadsbalansen "april" måste vi bara nämna det variabla namnet följt av en kvadratkonsol som innehåller indexvärdet för april månad, dvs "month_balance [3]". Men som "april" är årets fjärde månad men vi hade nämnt "[3]" eftersom alla arrayer har 0 som index för deras första element.
I Java kan detta göras som
// deklaration i Java-typ variabelnamn []; variable_name = ny typ [storlek];
Här hade vi ursprungligen förklarat en array-variabel med sin typ och då hade vi tilldelat minne till det med "nytt" och tilldela "nytt" till den deklarerade arrayvariabeln. Låt oss ta ovanstående exempel om vi vill deklarera en matris som innehåller balansen i varje månad på året.
// exempel int månad_balans []; month_balance = new int [12];
Här, "new" allokerar minne till array variabel "month_balance", så nu kommer mont_balance nu att hålla minnet för 12 heltal värden.
Array kan initialiseras när de deklareras. En arrayinitialiserare är en lista med kommaseparerade värden omgivna av lockiga axlar.
//exempel
int month_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450, 180};
Definition av två-dimensionell array (2-D array)
Både C ++ och Java stöds multidimensionell array. En av de enklaste formerna av en multidimensionell array är en, tvådimensionell array eller 2-D array. En tvådimensionell array kan betraktas som "array of arrays" eller "array of one-dimensional arrays". För att deklarera den tvådimensionella arrayvariabeln måste vi ange array-namnet följt av två kvadratparentes där det andra indexet är den andra uppsättningen fyrkantiga parenteser.
En tvådimensionell matris lagras i form av rad-kolumnmatrisen, där det första indexet anger rad och andra index anger kolumnen. Det andra eller det högsta indexet för en array ändras väldigt snabbt jämfört med första eller vänster index medan man får tillgång till elementen i en array.
// deklaration i C ++ typ variabelnamn [storlek1] [storlek2];
Till exempel vill vi lagra balansen på var 30: e dag i varje månad på året, i en 2-D-serie.
// exempel int månad_balans [12] [30];
I Java erhålls den tvådimensionella matrisen av
// deklaration i Java-typen variable_name = new int [size1] [size2]; // exempel int month_balance = new int [12] [30];
Eftersom vi inte kan överföra hela matrisen som en parameter till en funktion, passeras en pekare till det första elementet i matrisen. Ett argument som tar emot den tvådimensionella gruppen måste definiera att den är den högsta dimensionen. Den högsta dimensionen krävs eftersom kompilatorn behöver det, för att bekräfta längden på varje rad om den vill indexera arrayen korrekt. Om det högsta indexet inte nämns kan kompilatorn inte bestämma var nästa rad börjar.
// exempel i Java void receivinging_funct (int a [] [10]) {. . . }
När minnet tilldelas dynamiskt till den tvådimensionella matrisen i Java, anges det vänstra indexet och resterande dimensioner kan tilldelas separat, dvs alla rader i arrayen kanske inte är av samma storlek.
// exempel i 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];
Men det finns ingen fördel med att göra det.
Viktiga skillnader mellan en-dimensionell och två-dimensionell fasad
- Den endimensionella matrisen är en lista vars element är av liknande datatyp. Å andra sidan är den tvådimensionella gruppen en lista vars element är arrayen av liknande datatyp.
- I C ++, när den endimensionella matrisen mottas av parametern för en mottagningsfunktion, är det inte nödvändigt att nämna storleken på matrisen som kompilator förstår att matrisen av typen (nämnd datatyp tillsammans med parametern) med viss längd ska tas emot. I en tvådimensionell array ska det andra eller högsta indexet anges som kompilator behöver veta var en enda radänden och en ny rad börjar.
- I C ++ lagras den endimensionella gruppen i ett sammanhängande minnesplats i den indexerade ordningen, medan den tvådimensionella gruppen också lagras i den intilliggande minnesplatsen, men eftersom det finns flera rader i en tvådimensionell grupp, lagras en första rad följs av en sekund och den tredje och så vidare.
Notera:
Att passera både endimensionell matris liksom tvådimensionell matris till en funktion är lika, dvs båda passeras endast med namnet på matrisen
// exempel passing_funt (name_of_array);
Slutsats:
I både endimensionell och tvådimensionell matris spelar indexet en mycket viktig roll eftersom det är det enda som specifikt identifierar ett element i matrisen. Både endimensionell och tvådimensionell matris kan initieras vid tidpunkten för deras deklaration.