Så la oss begynne med forskjellene mellom One-dimensjon og Two-Dimension array sammen med en sammenligning diagram.
Sammenligningstabel:
Grunnlag for sammenligning | Endimensjonale | Todimensjonal |
---|---|---|
grunn~~POS=TRUNC | Lagre enkeltliste over elementer av tilsvarende datatype. | Lagre 'liste over lister' eller 'array of arrays' eller 'array of one-dimensional arrays'. |
Erklæring | / * erklæring i C ++ skriv variabelnavn [størrelse]; * / / * erklæring i Java skriv variabelnavn []; variable_name = ny type [størrelse]; * / | / * erklæring i C ++ skriv variable_name [size1] [size2]; * / / * erklæring i Java skriv variable_name = new int [size1] [size2]; * / |
Alternativ erklæring | / * I Java int [] a = ny int [10]; * / | / * I Java int [] [] a = ny int [10] [20]; * / |
Total størrelse i byte | Total Bytes = sizeof (datatype av array variabel) * størrelsen på array. | Total Bytes = sizeof (datatype av array variabel) * Størrelse på første indeks * Størrelse på andre indeks. |
Mottaksparameter | Den kan mottas i en peker, en stor rekkefølge eller en uspesifisert rekkefølge. | Parameteren som mottar den må definere den høyeste dimensjonen av en matrise. |
dimensjoner | Édimensjonal. | Todimensjonal. |
Definisjon av en-dimensjonal array (1-D array)
Et-dimensjonal eller en-dimensjonal array betraktes som "listen over variabler av liknende datatyper", og hver variabel kan tydelig vises ved å spesifisere sin indeks i firkantede parenteser som er forhåndsført av navnet på den aktuelle gruppen.
La oss diskutere i C ++-kontekst
// deklarasjon i C ++ type variabelnavn [størrelse];
Her erklærer typen datatypen for arrayvariabelen, og størrelsen definerer antall elementer som array vil holde.
For eksempel, hvis vi ønsker å erklære en matrise som vil inneholde balansen i hver måned i året.
// eksempel int måned_balanse [12];
Måned _balanse er matrisevariabelen som vil holde de 12 heltallene, som representerer balansen i hver måned. Nå, hvis vi ønsker å få tilgang til balansen i måneden april, måtte vi bare nevne variabelenavnet etterfulgt av kvadratkonsoll som inneholder indeksverdien for april måned, dvs. måned_balanse [3]. Men som "april" er fjerde måned i året, men vi hadde nevnt '[3]' fordi alle arrayene har 0 som indeksen for deres første element.
I Java kan dette gjøres som
// deklarasjon i Java-typen variable_name []; variable_name = ny type [størrelse];
Her hadde vi først opplyst en arrayvariabel med sin type, og da hadde vi tildelt minne til det ved hjelp av "nytt" og tildelingen "ny" til den deklarerte arrayvariabelen. La oss ta eksemplet ovenfor hvis vi vil erklære en matrise som vil inneholde balansen i hver måned i året.
// eksempel int måned_balanse []; month_balance = new int [12];
Her tildeler "new" minne til array variabel "month_balance", så nå vil mont_balance nå holde minnet for 12 heltallverdier.
Arrays kan initialiseres når de er erklært. En array initialiserer er listen over kommaseparerte verdier omgitt av krøllete braces.
//eksempel
int month_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450, 180};
Definisjon av to-dimensjonal array (2-D array)
Både C + + og Java-støtte multidimensjonal array. En av de enkleste former for et flerdimensjonalt array er et, todimensjonalt array eller 2-D-array. Et to-dimensjonalt array kan betraktes som "array of arrays" eller "array of one-dimensional arrays". For å deklarere den todimensjonale arrayvariabelen må vi angi navnetavnet etterfulgt av to firkantede parentes hvor den andre indeksen er det andre settet med firkantede parenteser.
Et todimensjonalt array lagres i form av rad-kolonne matrisen, der den første indeksen indikerer rad og andre indeks indikerer kolonnen. Den andre eller høyre side av en array endres veldig raskt i forhold til første eller venstre index mens du åpner elementene i en matrise.
// deklarasjon i C ++ type variabelnavn [size1] [size2];
For eksempel vil vi lagre balansen hver 30. dag i hver måned i året, i en 2-D-serie.
// eksempel int måned_balanse [12] [30];
I Java oppnås det todimensjonale matrisen ved
// deklarasjon i Java type variable_name = new int [size1] [size2]; // eksempel int month_balance = new int [12] [30];
Siden vi ikke kan overføre hele gruppen som en parameter til en funksjon, blir en peker til det første elementet i arrayet bestått. Et argument som mottar det todimensjonale arrayet må definere at det er den høyest dimensjonen. Den høyeste dimensjonen er nødvendig fordi kompilatoren trenger det, for å bekrefte lengden på hver rad hvis den vil indeksere arrayen riktig. Hvis den høyeste indeksen ikke er nevnt, kan kompilatoren ikke bestemme hvor neste rad starter.
// eksempel i Java void receivinging_funct (int a [] [10]) {. . . }
Når minnet blir dynamisk tilordnet til den todimensjonale gruppen i Java, er den venstre indeksen angitt, og de øvrige dimensjonene kan tildeles separat, dvs. at alle rader i arrayet kanskje ikke har samme størrelse.
// eksempel 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 er ingen fordel med å gjøre det.
Viktige forskjeller mellom en-dimensjonal og to-dimensjonal array
- Det endimensjonale arrayet er en liste hvis elementer er av liknende datatype. På den annen side er det todimensjonale arrayet en liste hvis elementer er gruppen av lignende datatype.
- I C ++, når det endimensjonale arrayet mottas av parameteren til en mottaksfunksjon, er det ikke nødvendig å nevne størrelsen på arrayet som kompilator forstår at gruppen av typen (nevnt datatype sammen med parameteren) med litt lengde er å bli mottatt. I et todimensjonalt array skal den andre eller høyeste indeksen spesifiseres som kompilator trenger å vite hvor en enkelt radendens og en ny rad starter.
- I C ++ lagres det endimensjonale arrayet i en sammenhengende minneplass i den indekserte rekkefølgen, mens det todimensjonale arrayet også lagres i den tilstøtende minnestedet, men da det er flere rader i et todimensjonalt array, lagres en første rad blir etterfulgt av en andre og den tredje og så videre.
Merk:
Passering av både, endimensjonal array samt todimensjonal array til en funksjon er liknende, dvs. begge er kun bestått av navnet på arrayen
// eksempel passing_funt (name_of_array);
Konklusjon:
I både endimensjonal og todimensjonal matrisen spiller indeksen en svært viktig rolle fordi det er det eneste som spesifikt identifiserer et element i matrisen. Både endimensjonal og todimensjonal matrise kan initialiseres på tidspunktet for deres erklæring.