Niisiis, alustame ühemõõtmelise ja kahemõõtmelise massiivi erinevustest koos võrdluskaardiga.
Võrdluskaart:
Võrdluse alus | Ühemõõtmeline | Kahemõõtmeline |
---|---|---|
Põhiline | Säilitage ühesuguse andmetüübiga elementide ühtne loend. | Salvestage 'nimekirjade loend' või 'massiivid' või 'ühemõõtmeliste massiivid'. |
Deklaratsioon | / * deklaratsioon C ++ tüüp muutuja_nimi [suurus]; * / / * deklaratsioon Java tüüp muutuja_nimi []; muutuja_nimi = uus tüüp [suurus]; * / | / * deklaratsioon C ++ tüüp muutuja_nimi [suurus1] [suurus2]; * / / * deklaratsioon Java tüüp muutuja_nimi = uus int [suurus1] [suurus2]; * / |
Alternatiivne deklaratsioon | / * Java int [] a = uus int [10]; * / | / * Java int [] [] a = uus int [10] [20]; * / |
Kogusuurus baitides | Kokku Bytes = suurus (massi muutuja andmetüüp) * massiivi suurus. | Kokku Bytes = suurus (massi muutuja andmetüüp) * esimese indeksi * suurus teise indeksi suurus. |
Vastuvõtuparameeter | Seda saab vastu võtta kursori, suurusega massiivi või mõõtmatu massiivi kujul. | Parameeter, mis võtab vastu, peab määratlema massiivi kõige parema mõõtme. |
Mõõdud | Ühemõõtmeline. | Kahemõõtmeline. |
Ühe mõõtmelise skeemi määratlus (1-D massiiv)
Ühe mõõtmelise või ühemõõtmelise massiivi loetakse "sarnaste andmetüüpide muutujate loendiks" ja iga muutujat saab selgelt kasutada, määrates selle indeksi ruudu sulgudes, millele eelneb selle massiivi nimi.
Arutagem C ++ kontekstis
// deklaratsioon C ++ tüüpi muutuja_nimi [suurus];
Tüüp deklareerib massiivi muutuja andmetüübi ja suurus määrab massiivi elementide arvu.
Näiteks, kui me tahame deklareerida massiivi, mis sisaldab iga kuu kuu tasakaalu.
// näide int month_balance [12];
Kuu _balanss on massiivi muutuja, mis hoiab 12 täisarvu, mis esindab iga kuu tasakaalu. Nüüd, kui me tahame ligipääsu kuu aprilli saldole, pidime lihtsalt mainima muutuja nime, millele järgnes ruuduklamber, mis sisaldas aprillikuu indeksi väärtust ehk „month_balance [3]”. Aga kuna “aprill” on aasta neljas kuu, kuid me mainisime „[3]”, sest kõigil massiividel on oma esimese elemendi indeksina 0.
Java-is saab seda teha nii
// deklaratsioon Java tüüpi muutuja_nimi []; muutuja_nimi = uus tüüp [suurus];
Esialgu olime me oma tüüpi tüüpi massiivi muutuja deklareerinud ja siis me andsime sellele mälu "uue" ja deklareeritud massiivi muutujaga "uus". Võtame ülaltoodud näite, kui tahame deklareerida massiivi, mis sisaldab tasakaalu igal kuul aastas.
// näide int month_balance []; month_balance = new int [12];
Siin eraldab "uus" mälu massiivi muutujale "month_balance", nii et nüüd hoiab mont_balance mällu 12 täisarvu väärtust.
Vahendeid saab vormindada, kui need on deklareeritud. Massiivi algoriteks on koma eraldatud väärtuste nimekiri, mida ümbritsevad lokid.
// näide
int month_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450, 180};
Kahemõõtmelise skeemi määratlus (2-D massiiv)
Nii C ++ kui ka Java toetavad mitmemõõtmelist massiivi. Mitmemõõtmelise massiivi üks lihtsamaid vorme on kahemõõtmeline massiiv või 2-D massiiv. Kahe mõõtmelise massiivi võib pidada massiivideks või ühemõõtmeliste massiivideks. Kahemõõtmelise massiivi muutuja deklareerimiseks peame määrama massiivi nime, millele järgneb kaks ruuduklambrit, kus teine indeks on teine ruuduklambrite komplekt.
Kahemõõtmeline massiiv on salvestatud rea-veeru maatriksi kujul, kus esimene indeks näitab rida ja teine indeks näitab veergu. Massiivi elementide juurde pääsemisel muutub massiivi teine või parempoolne indeks väga kiiresti, võrreldes esimese või vasakpoolse indeksiga.
// deklaratsioon C ++ tüüpi muutuja_nimi [suurus1] [suurus2];
Näiteks tahame hoida iga 30 päeva tagant tasakaalu iga kuu kuuendas reas.
// näide int month_balance [12] [30];
Java puhul saadakse kahemõõtmeline massiiv
// deklaratsioon Java tüüpi muutuja_nimi = uus int [size1] [suurus2]; // näide int month_balance = new int [12] [30];
Kuna me ei saa funktsiooni jaoks parameetrina kogu massiivi edastada, möödub massiivi esimese elemendi kursor. Kahemõõtmelise massiivi vastuvõttev argument peab määratlema selle kõige parema mõõtme. Õigeim mõõde on vajalik, sest kompilaator vajab seda, kinnitamaks iga rea pikkust, kui ta tahab massiivi õigesti indekseerida. Kui parempoolset indeksit ei mainita, ei saa kompilaator määrata, kuhu järgmine rida algab.
// näide Java void receptioning_funct (int a [] [10]) {. . . }
Kui mälu on dünaamiliselt eraldatud kahemõõtmelisele massiivile Java-s, määratakse vasakpoolne indeks ja ülejäänud mõõtmed saab eraldada eraldi, st kõik massiivi read ei pruugi olla sama suurusega.
// näide Java int month_balance = new int [12] []; month_balance [0] = uus int [31]; month_balance [1] = uus int [28]; month_balance [2] = uus int [31]; month_balance [3] = uus int [30]; month_balance [4] = uus int [31]; month_balance [5] = uus int [30]; month_balance [6] = uus int [31]; month_balance [7] = uus int [30]; month_balance [8] = uus int [31]; month_balance [9] = uus int [30]; month_balance [10] = uus int [31]; month_balance [11] = uus int [30]; month_balance [12] = uus int [31];
Kuid sellest ei ole kasu.
Ühemõõtmelise ja kahemõõtmelise kihi peamised erinevused
- Ühemõõtmeline massiiv on nimekiri, mille elemendid on sarnased. Teisest küljest on kahemõõtmeline massiiv loend, mille elemendid on sarnase andmetüübiga massiiv.
- C ++ puhul, kui ühe mõõtmelise massiivi saab vastuvõtva funktsiooni parameeter, ei ole vaja mainida massiivi suurust, sest kompilaator mõistab, et tüübi massiivi (mainitud andmeside koos parameetriga) teatud pikkusega tuleb vastu võtta. Kahemõõtmelise massiivi puhul tuleb määrata teine või parempoolsem indeks, sest kompilaator peab teadma, kus üks rea lõpp ja uus rida algab.
- C ++ puhul salvestatakse ühemõõtmeline massiiv ühilduvasse mälukohta indekseeritud järjekorras, samas kui kahemõõtmeline massiiv on salvestatud ka külgnevasse mälukohta, kuid kuna kahemõõtmelises massiivis on mitu rida, siis esimesele reale järgneb teine ja kolmas ja nii edasi.
Märge:
Nii ühemõõtmelise massiivi kui ka kahemõõtmelise massiivi edastamine funktsioonile on sarnane, st mõlemad edastatakse ainult massiivi nime järgi
// näide pass_funt (name_of_array);
Järeldus:
In nii ühemõõtmeline kui ka kahemõõtmeline massiiv, mängib indeks väga olulist rolli, sest see on ainus asi, mis konkreetselt identifitseerib massiivi elemendi. Nii ühemõõtmelist kui ka kahemõõtmelist massiivi saab nende deklaratsiooni esitamise ajal vormindada.