Taigi pradėkime nuo skirtumų tarp vieno matmens ir dviejų matmenų masyvo kartu su palyginimo diagrama.
Palyginimo diagrama:
Palyginimo pagrindas | Vieno matmens | Dvimatis |
---|---|---|
Pagrindinis | Laikykite vieną panašaus tipo duomenų elementų sąrašą. | Išsaugokite „sąrašų sąrašą“ arba „masyvų masyvą“ arba „vieno matmens masyvų masyvą“. |
Deklaracija | / * deklaracija C ++ įveskite kintamąjį_pavadinimą [dydis]; * / / * deklaracija „Java“ įveskite kintamąjį_narį []; variklio_pavadinimas = naujas tipas [dydis]; * / | / * deklaracija C ++ tipo kintamasis pavadinimas [dydis1] [dydis2]; * / / * deklaracija „Java“ tipas variklis_name = naujas int [dydis1] [dydis2]; * / |
Alternatyvi deklaracija | / * „Java“ int [] a = naujas int [10]; * / | / * „Java“ int [] [] a = naujas int [10] [20]; * / |
Bendras dydis bituose | Iš viso Bytes = dydis (masyvo kintamojo duomenų tipas) * matricos dydis. | Bendras bitas = dydis (masyvo kintamojo duomenų tipas) * pirmojo indekso * dydžio dydis antrasis indeksas. |
Priėmimo parametras | Jis gali būti priimtas rodyklėje, dydžio matricoje arba nedidelėje matricoje. | Parametras, gaunantis jį, turi nustatyti dešinįjį matricos matmenį. |
Matmenys | Vienas matmuo. | Dviejų dimensijų. |
Vieno dydžio matricos apibrėžimas (1-D masyvas)
Vieno matmens ar vieno matmens masyvas laikomas „panašių tipų duomenų kintamųjų sąrašu“, ir kiekvienas kintamasis gali būti aiškiai pasiekiamas, nurodant jo indeksą kvadratiniuose skliaustuose, prieš kuriuos nurodomas tos masyvo pavadinimas.
Aptarkime C ++ kontekste
// deklaracija C + + tipo kintamojo pavadinimo [dydis];
Čia tipas deklaruoja masyvo kintamojo duomenų tipą, o dydis apibrėžia masyvo elementų skaičių.
Pavyzdžiui, jei norime paskelbti masyvą, kuriame bus kiekvieno metų mėnesio likutis.
// pavyzdys int month_balance [12];
Mėnesio balansas yra masyvo kintamasis, kuriame bus 12 sveikųjų skaičių, kurie atspindi kiekvieno mėnesio likutį. Dabar, jei norime pasiekti balandį „Balandis“, mes paprasčiausiai turėjome paminėti kintamojo pavadinimą, po kurio buvo užrašytas kvadratinis skliaustas, kuriame yra balandžio mėnesio indekso reikšmė, ty „month_balance [3]“. Tačiau, kadangi „Balandis“ yra ketvirtas metų mėnuo, bet mes paminėjome „[3]“, nes visos matricos turi 0 savo pirmojo elemento indeksą.
„Java“ galima tai padaryti
// deklaracija Java tipo kintamojo pavadinime []; variklio_pavadinimas = naujas tipas [dydis];
Čia iš pradžių mes paskelbėme masyvo kintamąjį su jo tipu, o po to mes skyrėme atmintį naudodami „naują“ ir priskirti „naujas“ deklaruotam masyvo kintamajam. Paimkime aukščiau pateiktą pavyzdį, jei norime paskelbti masyvą, kuriame bus balansas kiekvienais metų mėnesiais.
// pavyzdys int month_balance []; month_balance = new int [12];
Čia „naujas“ skiria atmintį masyvo kintamajam „month_balance“, taigi dabar mont_balance dabar laikys atmintį 12 sveikųjų skaičių reikšmėms.
Įrenginiai gali būti inicijuoti, kai jie yra deklaruojami. Masyvo iniciatorius yra kableliais atskirtų vertybių, apsuptų garbanotais petnešomis, sąrašas.
//pavyzdys
int month_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450, 180};
Dvimatės matricos apibrėžimas (2-D masyvas)
Tiek „C ++“, tiek „Java“ palaiko daugiamatę masyvą. Viena iš paprasčiausių daugialypės matricos formų yra dvimatis masyvas arba 2-D masyvas. Dviejų dimensijų masyvas gali būti laikomas „masyvų masyvu“ arba „vieno matmenų matricų masyvu“. Norėdami deklaruoti dvimatį matricos kintamąjį, turime nurodyti masyvo pavadinimą, po kurio yra du kvadratiniai skliaustai, kuriuose antrasis indeksas yra antrasis kvadratinių skliaustų rinkinys.
Dvimatis masyvas yra saugomas eilutės stulpelio matricos forma, kur pirmasis indeksas nurodo eilutę ir antrasis indeksas rodo stulpelį. Antrasis ar dešinysis matricos indeksas labai greitai keičiasi, palyginti su pirmuoju ar kairiuoju indeksu, kai pasiekiami masyvo elementai.
// deklaracija C + + tipo kintamojo pavadinime [dydis1] [dydis2];
Pvz., Norime, kad kiekvienų metų mėnuo kas pusę dienų būtų išsaugotas 2 D masyvo balansas.
// pavyzdys int month_balance [12] [30];
„Java“ dvimatis masyvas gaunamas pagal
// deklaracija Java tipo kintamajame_name = nauja int [dydis1] [dydis2]; // pavyzdys int month_balance = new int [12] [30];
Kadangi mes negalime perduoti viso masyvo kaip parametro funkcijai, perkeliamas pirmasis masyvo elementas. Argumentas, gaunantis dvimatį masyvą, turi apibrėžti, kad jis yra dešinysis. Dešinysis matmuo yra būtinas, nes kompiliatoriui reikia, kad patvirtintumėte kiekvienos eilutės ilgį, jei ji norėtų teisingai indeksuoti masyvą. Jei dešinysis indeksas nepaminėtas, kompiliatorius negali nustatyti, kur prasideda kita eilutė.
// pavyzdys Java void receptioning_funct (int a [] [10]) {. . . }
Kai atmintis yra dinamiškai priskiriama dviejų dimensijų matricai „Java“, nurodomas kairysis indeksas, o likusieji matmenys gali būti priskirti atskirai, ty visos eilutės eilutės gali būti tokio paties dydžio.
// pavyzdys 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] = naujas int [31];
Tačiau tai nėra privalumas.
Pagrindiniai skirtumai tarp vieno matmens ir dvimatės struktūros
- Vieno matmens masyvas yra sąrašas, kurio elementai yra panašūs. Kita vertus, dvimatis masyvas yra sąrašas, kurio elementai yra panašaus tipo matrica.
- C + +, kai vieno matmens masyvas priimamas priimančios funkcijos parametru, nebūtina paminėti masyvo dydžio, nes kompiliatorius supranta, kad tipo masyvas (minėtas duomenų tipas kartu su parametru) tam tikru ilgiu turi būti gauta. Dvimatėje matricoje reikia nurodyti antrąjį arba dešinįjį indeksą, nes kompiliatorius turi žinoti, kur prasideda viena eilutė ir pradedama nauja eilutė.
- C ++ sistemoje vieno matmens masyvas yra saugomas gretimoje atminties vietoje indeksuotoje eilutėje, o dvimatis masyvas taip pat yra saugomas gretimoje atminties vietoje, tačiau kadangi dvimatėje eilutėje yra kelios eilutės, saugoma po pirmos eilės seka antras ir trečiasis ir pan.
Pastaba:
Abiejų, vieno matmens masyvo, taip pat ir dvimatės matricos perdavimas į funkciją yra panašus, ty abu yra perduodami tik masyvo pavadinimu
// pavyzdys pass_funt (name_of_array);
Išvada:
Tiek vieno matmens, tiek dvimatis masyvas indeksas atlieka labai svarbų vaidmenį, nes jis yra vienintelis dalykas, kuris konkrečiai identifikuoja masyvo elementą. Tiek vieno matmens, tiek dvimatis masyvas gali būti inicijuotas jų deklaravimo metu.