Priporočena, 2024

Izbira Urednika

Razlika med enodimenzionalno (1D) in dvodimenzionalno (2D) matriko

Matrika je zbirka spremenljivk, ki imajo podobne podatkovne tipe in se nanašajo na skupno ime. Do določenega elementa v matriki lahko dostopa določen indeks tega polja. Nizi v Javi delujejo drugače kot C ++. Glavna tema naše razprave je razlika med enodimenzionalno in dvodimenzionalno matriko. Enodimenzionalna matrika je seznam spremenljivk z istim tipom podatkov, medtem ko je dvodimenzijsko polje »niz nizov« s podobnimi tipi podatkov. C ++ nimajo vezanega preverjanja na nizih, medtem ko ima Java strogo vezano preverjanje nizov.

Začnimo torej z razlikami med enim in dvema dimenzijama ter primerjalno tabelo.

Tabela za primerjavo:

Podlaga za primerjavoEnodimenzijskaDvodimenzionalna
Osnovno
Shranite en seznam elementov podobnega tipa podatkov.Shranite "seznam seznamov" ali "niz nizov" ali "niz enodimenzionalnih polj".
Deklaracija/ * izjava v jeziku C ++
vpišite ime_ spremenljivke [velikost]; * /
/ * deklaracija v Javi
vpišite ime_ spremenljivke [];
ime_ spremenljivke = nov tip [velikost]; * /
/ * izjava v jeziku C ++
tip ime_ spremenljivke [velikost1] [velikost2]; * /
/ * deklaracija v Javi
vpišite variable_name = new int [size1] [size2]; * /
Alternativna deklaracija/ * V Javi
int [] a = novo int [10]; * /
/ * V Javi
int [] [] a = novo int [10] [20]; * /
Skupna velikost v bajtihSkupni bajtov = velikost (tip podatkovne spremenljivke) * velikost matrike.Skupni bajti = velikost (tip podatkov spremenljivke) * velikost prvega indeksa * velikost drugega indeksa.
Sprejemni parameterLahko ga prejmete v kazalcu, velikem polju ali nesimetrični matriki.Sprejem parametra mora definirati skrajno desno dimenzijo matrike.
DimenzijeEnodimenzionalno.Dvodimenzionalno.

Opredelitev enodimenzijske matrike (matrika 1-D)

Enodimenzijska ali enodimenzijska matrika se šteje za "seznam spremenljivk podobnih podatkovnih tipov", do vsake spremenljivke pa je mogoče dostopati z natančno določitvijo indeksa v oglatih oklepajih, pred katerim je ime tega polja.

V C ++ je deklaracija spremenljivke polja z velikostjo dovolj, da jim dodeli prostor v pomnilniku. V Javi se to doseže v dveh korakih. Najprej morate deklarirati spremenljivko želenega tipa. Drugič, pomnilnik morate dodeliti tako, da drži matriko z 'new' in jo dodeli deklarirani spremenljivki. Zato so nizi dinamično dodeljeni v Javi.

Poglejmo v kontekstu C + +

 // deklaracija v C ++ tipu spremenljivke [velikost]; 

Tukaj tip razglasi podatkovni tip spremenljivke polja, velikost pa določa število elementov, ki jih bo polje imelo.

Na primer, če želimo razglasiti matriko, ki bo vsebovala stanje vsakega meseca v letu.

 // primer int mesec_balance [12]; 

Mesec _balance je spremenljivka niza, ki bo vsebovala 12 celih števil, ki predstavljajo bilanco vsakega meseca. Zdaj, če želimo dostopati do stanja meseca „April“, moramo preprosto omeniti ime spremenljivke, ki mu sledi oglati oklepaj, ki vsebuje vrednost indeksa za mesec april, tj. „Mesec_balance“ [3]. Toda kot »april« je četrti mesec v letu, vendar smo omenili »[3]«, ker imajo vsi nizi 0 indeks kot njihov prvi element.

V Javi je to mogoče storiti kot

 // deklaracija v Java tipu spremenljivke []; ime_ spremenljivke = nov tip [velikost]; 

Tu smo najprej razglasili spremenljivko niza s svojim tipom in potem smo ji dodelili pomnilnik z uporabo 'new' in dodeli 'novo' deklarirani spremenljivki niza. Vzemimo zgornji primer, če želimo razglasiti polje, ki bo vsebovalo stanje v vsakem mesecu leta.

 // primer int mesec_balance []; month_balance = novo int [12]; 

Tukaj 'new' dodeli pomnilnik spremenljivki niza 'month_balance', tako da bo zdaj mont_balance zdaj shranil pomnilnik za 12 celoštevilskih vrednosti.

Nizi se lahko inicializirajo, ko so deklarirani. Inicializator matrike je seznam vrednosti, ločenih z vejicami, ki so obdane z zavitimi oklepaji.
// na primer

 int month_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450, 180}; 

Opredelitev dvodimenzionalnega polja (2-D matrika)

Oba C ++ in Java podpirata večdimenzionalno polje. Ena od najpreprostejših oblik večdimenzionalnega polja je dvodimenzionalna matrika ali 2-D matrika. Dvodimenzijsko polje se lahko šteje za "niz nizov" ali "niz enodimenzionalnih polj". Za razglasitev dvodimenzionalne spremenljivke niza moramo podati ime polja, ki mu sledita dve oglati oklepaji, pri čemer je drugi indeks drugi niz oglatih oklepajev.

Dvodimenzionalna matrika je shranjena v obliki matrike vrstic-stolpcev, kjer prvi indeks označuje vrstico, drugi indeks pa stolpec. Drugi ali najbolj desni indeks polja se zelo hitro spremeni v primerjavi s prvim ali levim indeksom, medtem ko dostopa do elementov matrike.

V C ++ je dvodimenzionalno polje deklarirano kot;

 // deklaracija v C ++ tipu spremenljivke [size1] [size2]; 

Na primer, želimo shraniti stanje na vsakih 30 dni v vsakem mesecu leta v 2-D matriki.

 // primer int mesec_balance [12] [30]; 

V Javi je dvodimenzionalna matrika pridobljena z

 // deklaracija v Java tip spremenljivke = novo int [velikost1] [velikost2]; // primer int mesec_balance = novo int [12] [30]; 

Ker ne moremo prenesti celotnega niza kot parametra na funkcijo, se posreduje kazalec na prvi element matrike. Argument, ki sprejema dvodimenzionalno polje, mora določiti, da je dimenzija desna. Najmanjša dimenzija je potrebna, ker jo potrebuje prevajalnik, da potrdi dolžino vsake vrstice, če želi indeks pravilno nastaviti. Če indeks največje desnice ni omenjen, prevajalnik ne more določiti, kje se začne naslednja vrstica.

 // primer v Java void receiveing_funct (int a [] [10]) {. . . } 

Ko je pomnilnik dinamično dodeljen dvodimenzionalnemu nizu v Javi, je naveden levi indeks, preostale dimenzije pa se lahko dodelijo ločeno, tj. Vse vrstice matrike ne smejo biti enake velikosti.

 // primer v Java int month_balance = novo int [12] []; month_balance [0] = novo int [31]; month_balance [1] = novo int [28]; month_balance [2] = novo int [31]; month_balance [3] = novo int [30]; month_balance [4] = novo int [31]; month_balance [5] = novo int [30]; month_balance [6] = novo int [31]; month_balance [7] = novo int [30]; month_balance [8] = novo int [31]; month_balance [9] = novo int [30]; month_balance [10] = novo int [31]; month_balance [11] = novo int [30]; month_balance [12] = novo int [31]; 

Vendar pa tega ni.

Ključne razlike med enodimenzionalno in dvodimenzionalno matriko

  1. Enodimenzionalna matrika je seznam, katerega elementi so podobnega tipa podatkov. Po drugi strani pa je dvodimenzionalna matrika seznam, katerega elementi so matrika podobnega tipa podatkov.
  2. V C ++, ko enodimenzionalno polje prejme parameter sprejemne funkcije, ni treba omenjati velikosti matrike, saj prevajalnik razume, da je matrika vrste (omenjeni tip podatkov skupaj z parametrom) z nekaj dolžine. je treba prejeti. V dvodimenzionalnem nizu je treba določiti drugi ali desni indeks, saj mora prevajalnik vedeti, kje se konča ena vrstica in se začne nova vrstica.
  3. V C ++ je enodimenzionalna matrika shranjena v sosednji pomnilniški lokaciji v indeksiranem vrstnem redu, medtem ko je dvodimenzionalna matrika shranjena tudi v sosednji pomnilniški lokaciji, toda ker je v dvodimenzionalnem nizu več vrstic, je shranjevanje prvi vrsti sledi drugi in tretji in tako naprej.

Opomba:

Prehod obeh, enodimenzionalnega niza kot tudi dvodimenzionalnega polja v funkcijo, je podoben, tj. Oba sta posredovana le z imenom polja

 // na primer prelaz_funt (name_of_array); 

Sklep:

V obeh enodimenzionalnih in dvodimenzionalnih matrikah indeks igra zelo pomembno vlogo, ker je edina stvar, ki specifično identificira element v matriki. Tako enodimenzionalno kot tudi dvodimenzionalno polje se lahko inicializirajo v času njihove izjave.

Top