Tāpēc sāksim ar atšķirībām starp vienu dimensiju un divdimensiju masīvu kopā ar salīdzinājuma diagrammu.
Salīdzināšanas diagramma:
Salīdzinājuma pamats | Viendimensiju | Divdimensiju |
---|---|---|
Pamata | Saglabājiet vienotu sarakstu ar līdzīga veida datiem. | Saglabājiet "sarakstu sarakstu" vai "masīvu bloku" vai "vienas dimensijas masīvs". |
Deklarācija | / * deklarācija C ++ ierakstiet mainīgo_nosaukumu [izmērs]; * / / * deklarācija Java ierakstiet mainīgo_nosaukumu []; mainīgais_nosaukums = jauns veids [lielums]; * / | / * deklarācija C ++ tipa mainīgais_nosaukums [size1] [size2]; * / / * deklarācija Java tipa mainīgais_nosaukums = jauns int [size1] [size2]; * / |
Alternatīva deklarācija | / * Java int [] a = jauns int [10]; * / | / * Java int [] [] a = jauns int [10] [20]; * / |
Kopējais lielums Bytos | Kopējie biti = izmērs (masīva mainīgā datu tips) * masīva izmērs. | Kopējie biti = izmērs (masas mainīgā datu tips) * pirmā indeksa * lieluma otrā indeksa lielums. |
Saņemšanas parametrs | To var saņemt rādītājā, izmēra masīvā vai nesagrieztā masīvā. | Parametram, kas to saņem, jādefinē masīva labākais izmērs. |
Izmēri | Viens izmērs. | Divdimensiju. |
Viendimensiju diagrammas definīcija (1-D masīvs)
Viendimensiju vai viena dimensijas masīvs tiek uzskatīts par “līdzīgu datu tipu mainīgo sarakstu”, un katru mainīgo var skaidri piekļūt, norādot tā indeksu kvadrātiekavās, pirms kura ir šī masīva nosaukums.
Apspriedīsim C ++ kontekstā
// deklarācija C + + tipa mainīgajā nosaukumā [lielums];
Šeit tips deklarē masīva mainīgā datu tipu, un izmērs nosaka to elementu skaitu, kurus masīvs saglabās.
Piemēram, ja mēs vēlamies pasludināt masīvu, kas satur katra mēneša atlikumu.
// piemērs int month_balance [12];
Mēneša bilance ir masīva mainīgais, kuram būs 12 veseli skaitļi, kas atspoguļo katra mēneša atlikumu. Tagad, ja mēs vēlamies piekļūt "aprīļa" mēneša bilancei, mums vienkārši bija jāmin mainīgais nosaukums, kam seko kvadrātiekavs, kas satur aprīļa mēneša indeksa vērtību, ti, "month_balance [3]". Bet, tā kā “aprīlis” ir gada ceturtais mēnesis, bet mēs minējām “[3]”, jo visiem masīviem ir 0 kā pirmā elementa indekss.
Java sistēmā to var izdarīt kā
// deklarācija Java tipa mainīgajā nosaukumā []; mainīgais_nosaukums = jauns veids [lielums];
Sākumā mēs sākotnēji paziņojām par masīva mainīgo ar savu tipu, un pēc tam mēs tam piešķīrām atmiņu, izmantojot 'new' un piešķirot 'new' deklarētajam masīva mainīgajam. Pieņemsim iepriekš minēto piemēru, ja mēs vēlamies pasludināt masīvu, kurā būs iekļauts atlikums katrā gada mēnesī.
// piemērs int month_balance []; month_balance = new int [12];
Šeit "jauns" piešķir atmiņu masīva mainīgajam "month_balance", tāpēc tagad mont_balance tagad saglabās atmiņu par 12 veseliem skaitļiem.
Rīkojumus var inicializēt, kad tie ir deklarēti. Masīva inicializators ir ar komatu atdalītu vērtību saraksts, ko ieskauj cirtaini bikšturi.
//piemērs
int month_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450, 180};
Divdimensiju diagrammas definīcija (2-D masīvs)
Gan C ++, gan Java atbalsta daudzdimensiju masīvu. Viens no vienkāršākajiem daudzdimensiju masīvu veidiem ir divdimensiju masīvs vai 2-D masīvs. Divdimensiju masīvu var uzskatīt par "masīvu bloku" vai "viena dimensiju bloku masīvu". Lai deklarētu divdimensiju masīvu mainīgo, mums ir jānorāda masīva nosaukums, kam seko divas kvadrātiekavas, kur otrais indekss ir otrais kvadrātiekavu komplekts.
Divdimensiju masīvs tiek saglabāts rindu kolonnas matricas formā, kur pirmais indekss norāda rindu un otro indeksu norāda kolonnu. Otrs vai labākais matricas indekss ļoti strauji mainās, salīdzinot ar pirmo vai kreiso indeksu, vienlaikus piekļūstot masīva elementiem.
// deklarācija C + + tipa mainīgajā nosaukumā [size1] [size2];
Piemēram, mēs vēlamies saglabāt atlikumu ik pēc 30 dienām katrā mēneša mēnesī 2-D masīvā.
// piemērs int month_balance [12] [30];
Java sistēmā divdimensiju masīvs tiek iegūts ar
// deklarācija Java tipa mainīgajā_name = new int [size1] [size2]; // piemērs int month_balance = new int [12] [30];
Tā kā mēs nevaram nodot visu masīvu kā parametru funkcijai, tiek nodots rādītājs uz masīva pirmo elementu. Ar argumentu, kas saņem divdimensiju masīvu, ir jādefinē, ka tā ir pareizā dimensija. Labākais izmērs ir vajadzīgs, jo kompilatoram tas ir vajadzīgs, lai apstiprinātu katras rindas garumu, ja tā vēlas indeksēt masīvu pareizi. Ja labākais rādītājs nav minēts, kompilators nevar noteikt, kur sākas nākamā rinda.
// piemērs Java void receptioning_funct (int a [] [10]) {. . . }
Ja atmiņa tiek dinamiski iedalīta divdimensiju masīvam Java, tiek norādīts kreisais rādītājs, un atlikušos izmērus var piešķirt atsevišķi, ti, visas masīva rindas var nebūt vienāda lieluma.
// piemērs 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] = jauns int [31]; month_balance [9] = new int [30]; month_balance [10] = new int [31]; month_balance [11] = jauns int [30]; month_balance [12] = jauns int [31];
Taču nav nekādu priekšrocību.
Galvenās atšķirības starp vienu dimensiju un divdimensiju struktūru
- Viendimensiju masīvs ir saraksts, kura elementi ir līdzīgi datu tipam. No otras puses, divdimensiju masīvs ir saraksts, kura elementi ir līdzīga datu veida masīvs.
- C + +, kad vienadimensiju masīvs tiek saņemts ar uztveres funkcijas parametru, nav nepieciešams pieminēt masīva lielumu, jo kompilators saprot, ka tipa masīvs (minētais datu tips kopā ar parametru) ar zināmu garumu ir jāsaņem. Divdimensiju masīvā jānorāda otrais vai labākais visvairāk indekss, jo kompilatoram ir jāzina, kur sākas viena rindas beigas un jauna rinda.
- C + + viendimensiju masīvs tiek saglabāts blakus esošajā atmiņas vietā indeksētā secībā, turpretim divdimensiju masīvs tiek saglabāts arī blakus esošajā atmiņas vietā, bet, tā kā divdimensiju masīvā ir vairākas rindiņas, pirmajā rindā seko otrais un trešais un tā tālāk.
Piezīme:
Gan viena, gan divdimensiju masīva, gan divdimensiju masīva nodošana funkcijai ir līdzīga, ti, abi tiek nodoti tikai pēc masīva nosaukuma
// piemērs pass_funt (name_of_array);
Secinājums:
Gan viena, gan divdimensiju masīvā indeksam ir ļoti svarīga loma, jo tā ir vienīgā lieta, kas konkrēti identificē masīva elementu. Gan vienu dimensiju, gan divdimensiju masīvu var inicializēt deklarācijas brīdī.