Så lad os begynde med forskellene mellem One-dimension og Two-Dimension array sammen med en sammenligning diagram.
Sammenligningstabel:
Grundlag for sammenligning | One-Dimensional | Todimensionale |
---|---|---|
Grundlæggende | Gem en enkelt liste over elementer af samme datatype. | Gem 'liste over lister' eller 'array af 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 = nyt int [10]; * / | / * I Java int [] [] a = ny int [10] [20]; * / |
Total størrelse i byte | Total Bytes = sizeof (datatype af array variabel) * størrelsen af array. | Total Bytes = sizeof (datatype af array variabel) * størrelse på første indeks * størrelse af andet indeks. |
Modtagerparameter | Den kan modtages i en peger, en stor matrix eller et usorteret array. | Parameter, der modtager det, skal definere den højeste dimension i en matrix. |
Dimensioner | Édimensionel. | To-dimensionelle. |
Definition af One-Dimensional Array (1-D array)
Et-dimensionelt eller enkeltdimensionelt array betragtes som "listen over variabler af lignende datatyper", og hver variabel kan tydeligt nås ved at angive sit indeks i firkantede parentes forud for navnet på det pågældende array.
Lad os diskutere i C ++ kontekst
// erklæring i C ++ type variable_name [size];
Her typen erklærer datatypen for array-variablen, og størrelsen definerer det antal elementer, som array vil holde.
For eksempel, hvis vi ønsker at erklære en matrix, der vil indeholde balancen i hver måned i året.
// eksempel int måned_balance [12];
Måned _balance er array variablen, som vil holde de 12 heltal, som vil repræsentere balancen i hver måned. Nu, hvis vi ønsker at få adgang til balancen i måneden 'april', skulle vi blot nævne det variable navn efterfulgt af firkantet beslag indeholdende indeksværdien for april måned, dvs. 'month_balance [3]'. Men som 'april' er årets fjerde måned, men vi havde nævnt '[3]', fordi alle arrayer har 0 som indekset for deres første element.
I Java kan dette gøres som
// erklæring i Java-typen variable_name []; variable_name = ny type [størrelse];
Her havde vi oprindeligt deklareret en array-variabel med sin type, og så havde vi allokeret hukommelse til den ved hjælp af 'ny' og tildelingen 'ny' til den deklarerede array-variabel. Lad os tage ovenstående eksempel, hvis vi vil erklære en matrix, som vil indeholde balancen i hver måned af året.
// eksempel int måned_balance []; month_balance = new int [12];
Her tildeler "new" hukommelse til array variabel "month_balance", så nu vil mont_balance nu holde hukommelsen til 12 heltalsværdier.
Arrays kan initialiseres, når de erklæres. En array initialiserer er listen over kommaseparerede værdier omgivet af krøllede seler.
//eksempel
int month_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450, 180};
Definition af to-dimensionelle array (2-D array)
Både C ++ og Java support multidimensionale array. En af de enkleste former for et multidimensionalt array er et, todimensionelt array eller 2-D array. Et todimensionelt array kan betragtes som "array of arrays" eller "array of one-dimensional arrays". For at deklarere den todimensionelle array-variabel, skal vi angive arraynavnet efterfulgt af to firkantede parentes, hvor det andet indeks er det andet sæt firkantede parenteser.
Et todimensionelt array opbevares i form af rad-kolonne matrixen, hvor det første indeks angiver rækken, og andet indeks angiver søjlen. Det andet eller højre side af en array ændres meget hurtigt i forhold til første eller venstre-indekset, mens du får adgang til elementerne i en matrix.
// erklæring i C ++ type variable_name [size1] [size2];
For eksempel ønsker vi at gemme balancen på hver 30 dage i hver måned i året, i et 2-D array.
// eksempel int måned_balance [12] [30];
I Java opnås det todimensionelle array af
// erklæring i Java type variable_name = new int [size1] [size2]; // eksempel int month_balance = new int [12] [30];
Da vi ikke kan passere hele arrayet som en parameter til en funktion, er en pointer til det første element i arrayet bestået. Et argument, der modtager det todimensionelle array, skal definere, at det er den højeste dimension. Den højeste dimension er nødvendig, fordi kompilatoren har brug for det, for at bekræfte længden af hver række, hvis den vil indeksere arrayet korrekt. Hvis det højeste indeks ikke er nævnt, kan kompilatoren ikke bestemme, hvor den næste række starter.
// eksempel i Java void receivinging_funct (int a [] [10]) {. . . }
Når hukommelsen tildeles dynamisk til det todimensionelle array i Java, er det venstre indeks angivet, og de resterende dimensioner kan tildeles separat, dvs. alle rækker i arrayet må ikke være af 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 der er ingen fordel ved at gøre det.
Nøgleforskelle mellem en-dimensionel og to-dimensionel array
- Det endimensionelle array er en liste, hvis elementer er af lignende datatype. På den anden side er det todimensionelle array en liste, hvis elementer er arrayet af en lignende datatype.
- I C ++, når det endimensionelle array modtages af parameteren for en modtagelsesfunktion, er det ikke nødvendigt at nævne størrelsen af arrayet som kompilator forstår at arrayet af typen (nævnt datatype sammen med parameteren) med en vis længde skal modtages. I et todimensionelt array skal det andet eller det højeste indeks angives, da kompilatoren skal vide, hvor en enkelt rad slutning og en ny række starter.
- I C ++ lagres det endimensionelle array i et sammenhængende hukommelsessted i den indekserede rækkefølge, medens det todimensionelle array også lagres i den tilstødende hukommelsesplacering, men da der er flere rækker i et todimensionelt array, opbevares en første række efterfølges af en anden og den tredje og så videre.
Bemærk:
Passering af både endimensionelle array såvel som todimensionelle array til en funktion er ens, dvs. begge er kun bestået af navnet på array
// eksempel passing_funt (name_of_array);
Konklusion:
I både endimensionale og todimensionelle array spiller indekset en meget vigtig rolle, fordi det er det eneste der specifikt identificerer et element i arrayet. Både endimensionel og todimensionel matrix kan initialiseres på tidspunktet for deres erklæring.