Odporúčaná, 2024

Redakcia Choice

Rozdiel medzi jednorozmerným (1D) a dvojrozmerným (2D) poľom

Pole je súbor premenných, ktoré majú podobné typy údajov a sú označené spoločným menom. Špecifický prvok v poli je prístupný konkrétnym indexom tohto poľa. Polia v jazyku Java fungujú odlišne v porovnaní s C ++. Hlavnou témou našej diskusie je rozdiel medzi jednosmerným a dvojrozmerným poľom. Jednorozmerné pole je zoznam premenných s rovnakým typom údajov, zatiaľ čo dvojrozmerné pole je "pole polí", ktoré majú podobné typy údajov. C ++ nemajú viazanú kontrolu na poliach, zatiaľ čo Java má prísne viazanú kontrolu na poli.

Takže začneme s rozdielmi medzi jednosmerným a dvojkomorovým poľom a porovnávacou tabuľkou.

Porovnávacia tabuľka:

Základ pre porovnanieOne-DimensionalTwo-Dimensional
základné
Uložte jeden zoznam prvkov podobného typu údajov.Uložiť "zoznam zoznamov" alebo "pole polí" alebo "pole jednorozmerných polí".
vyhlásenie/ * vyhlásenie v jazyku C ++
type variable_name [veľkosť]; * /
/ * vyhlásenie v jazyku Java
typ variable_name [];
variable_name = nový typ [veľkosť]; * /
/ * vyhlásenie v jazyku C ++
typ variable_name [size1] [size2]; * /
/ * vyhlásenie v jazyku Java
typ variable_name = nový int [size1] [size2]; * /
Alternatívne vyhlásenie/ * V jazyku Java
int [] a = nový int [10]; * /
/ * V jazyku Java
int [] [] a = nový int [10] [20]; * /
Celková veľkosť v bajtochCelkový počet bajtov = veľkosť (typ dátovej premennej) * veľkosť poľa.Celkový počet bajtov = veľkosť (typ dátovej premennej) * veľkosť prvého indexu * veľkosť druhého indexu.
Príjem parametraMôže sa prijímať v ukazovateli, veľkom poli alebo neosporiadanom poli.Príjem parametrov musí definovať najväčší rozmer poľa.
RozmeryJednorozmerný.Dvojrozmerné.

Definícia jednorozmerného poľa (1-D pole)

Jedno-dimenzionálne alebo jednorozmerné pole sa považuje za "zoznam premenných podobných typov údajov" a každá premenná môže byť zreteľne prístupná špecifikovaním jej indexu v hranatých zátvorkách, ktorému predchádza názov tohto poľa.

V programe C ++ stačí vyhlásenie premennej poľa s veľkosťou prideliť priestor v pamäti. V Java je to dosiahnuté v dvoch krokoch. Najprv musíte deklarovať premennú požadovaného typu. Po druhé, musíte prideliť pamäť na držanie poľa pomocou "nového" a priradiť ho k deklarovanej matici premennej. Polia sú dynamicky pridelené v jazyku Java.

Poďme diskutovať v kontexte C + +

 // deklarácia v type C ++ variable_name [size]; 

Tu typ deklaruje dátový typ premennej poľa a veľkosť definuje počet elementov, ktoré pole bude mať.

Ak napríklad chceme deklarovať pole, ktoré bude obsahovať zostatok každého mesiaca v roku.

 // príklad int month_balance [12]; 

Mesačná bilancia je premenná poľa, ktorá bude obsahovať 12 celých čísel, čo bude predstavovať zostatok každého mesiaca. Teraz, ak chceme získať prístup k bilancii mesiaca apríl, jednoducho sme museli uviesť názov premennej, za ktorým nasleduje hranatá zátvorka obsahujúca indexovú hodnotu za mesiac apríl, tj "month_balance [3]". Ale ako "apríl" je štvrtý mesiac v roku, ale spomenuli sme "[3]", pretože všetky matice majú 0 ako index ich prvého prvku.

V jazyku Java je možné to urobiť ako

 // deklarácia v type Java variable_name []; variable_name = nový typ [veľkosť]; 

Tu sme najskôr deklarovali premennú poľa s jej typom a potom sme jej pridelili pamäť pomocou "new" a priradiť "new" k deklarovanej poľnej premennej. Pridajme si príklad, ak chceme deklarovať pole, ktoré bude obsahovať zostatok v každom mesiaci roka.

 // príklad int month_balance []; month_balance = nový int [12]; 

Tu "nové" prideľuje pamäť na premennú poľa "month_balance", takže teraz, mont_balance bude teraz držať pamäť pre 12 celočíselných hodnôt.

Polia môžu byť inicializované, keď sú deklarované. Inicializátor polí je zoznam hodnôt oddelených čiarkou, obklopených kučeravými zátvorkami.
// príklad

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

Definícia dvojrozmerného poľa (2-D pole)

Obe C ++ a Java podporujú multidimenzionálne pole. Jednou z najjednoduchších foriem multidimenzionálneho poľa je dvojrozmerné pole alebo dvojrozmerné pole. Dvojrozmerné pole sa môže považovať za "pole polí" alebo "pole jednorozmerných polí". Na deklarovanie dvojrozmernej premennej poľa musíme špecifikovať názov poľa nasledovaný dvomi hranatými zátvorkami, kde druhý index je druhá sada hranatých zátvoriek.

Dvojrozmerné pole je uložené vo forme matice riadok-stĺpec, kde prvý index označuje riadok a druhý index označuje stĺpec. Druhý alebo pravý index poľa sa veľmi rýchlo mení v porovnaní s prvým alebo ľavým indexom pri prístupe k prvkom poľa.

V C ++ je dvojrozmerné pole deklarované ako;

 // deklarácia v type C ++ variable_name [size1] [size2]; 

Napríklad chceme uložiť zostatok každých 30 dní v každom mesiaci roka v dvojrozmernom poli.

 // príklad int month_balance [12] [30]; 

V jazyku Java sa dvojrozmerné pole získava

 // deklarácia v jazyku Java variable_name = new int [size1] [size2]; // príklad int month_balance = new int [12] [30]; 

Keďže nemôžeme preniesť celé pole ako parameter na funkciu, prejde ukazovateľ na prvý prvok poľa. Argument prijímajúci dvojrozmerné pole musí definovať jeho najväčšiu dimenziu. Pravá dimenzia je potrebná, pretože kompilátor ju potrebuje na potvrdenie dĺžky každého riadka, ak chce indexovať pole správne. Ak nie je uvedený ten pravý index, kompilátor nemôže určiť, kde sa začína ďalší riadok.

 // príklad v jazyku Java void receiveing_funct (int a [] [10]) {., , } 

Keď je pamäť dynamicky priradená dvojrozmernému poľu v jazyku Java, špecifikuje sa ľavý index a zvyšné rozmery sa môžu prideliť oddelene, tj všetky riadky poľa nemusia mať rovnakú veľkosť.

 // príklad v jazyku Java int month_balance = new int [12] []; month_balance [0] = nový int [31]; month_balance [1] = nový int [28]; month_balance [2] = nový int [31]; month_balance [3] = nový int [30]; month_balance [4] = nový int [31]; month_balance [5] = nový int [30]; month_balance [6] = nový int [31]; month_balance [7] = nový int [30]; month_balance [8] = nový int [31]; month_balance [9] = nový int [30]; month_balance [10] = nový int [31]; month_balance [11] = nový int [30]; month_balance [12] = nový int [31]; 

Ale nie je tu žiadna výhoda.

Kľúčové rozdiely medzi jednorozmerným a dvojrozmerným poľom

  1. Jednorozmerné pole je zoznam, ktorého prvky majú podobný typ údajov. Na druhej strane dvojrozmerné pole je zoznam, ktorého prvky sú pole podobného typu údajov.
  2. V C ++ sa pri prijímaní jednorozmerného poľa parametrom prijímacej funkcie nie je potrebné spomenúť veľkosť poľa, pretože kompilátor chápe, že pole typu (uvedený údajový typ spolu s parametrom) s určitou dĺžkou má byť prijatá. V dvojrozmernom poli je potrebné špecifikovať druhý alebo pravý index, pretože kompilátor musí vedieť, kde začína jeden riadok a nový riadok.
  3. V C ++ je jednorozmerné pole uložené v súvislom pamäťovom mieste v indexovanom poradí, zatiaľ čo dvojrozmerné pole je tiež uložené v susednom pamäťovom mieste, ale keďže sú v dvojrozmernom poli viaceré riadky, ukladanie po prvom riadku nasleduje druhý a tretí a tak ďalej.

Poznámka:

Prechod jednosmerného, ​​ako aj dvojrozmerného poľa na funkciu je podobný, tj obe sú odovzdávané iba názvom poľa

 // príklad passing_funt (názov_zarazenia); 

záver:

V oboch jednorozmerných a dvojrozmerných poliach index zohráva veľmi dôležitú úlohu, pretože je to jediná vec, ktorá špecificky identifikuje prvok v poli. Obe jednorozmerné a dvojrozmerné pole môžu byť inicializované v čase ich vyhlásenia.

Top