Doporučená, 2024

Redakce Choice

Rozdíl mezi jednorozměrným (1D) a dvourozměrným (2D) polem

Pole je kolekce proměnných, které mají podobné datové typy a jsou označeny běžným názvem. Ke konkrétnímu prvku v poli přistupuje určitý index daného pole. Pole v Javě pracují odlišně ve srovnání s C ++. Hlavním tématem naší diskuse je rozdíl mezi jednorozměrným a dvourozměrným polem. Jednorozměrné pole je seznam proměnných se stejným datovým typem, zatímco dvourozměrné pole je pole matic s podobnými datovými typy. C ++ nemají vázanou kontrolu na polích, zatímco Java mají přísnou vázanou kontrolu na polích.

Začněme tedy rozdíly mezi maticí One-Dimension a Two-Dimension spolu s grafem porovnání.

Tabulka porovnání:

Základ pro porovnáníJednorozměrnéDvourozměrný
Základní
Uložte jeden seznam prvků podobného typu dat.'Seznam' nebo 'pole polí' nebo 'pole jednorozměrných polí'.
Prohlášení/ * deklarace v C ++
typ proměnné jméno [velikost]; * /
/ * deklarace v jazyce Java
type variable_name [];
variable_name = nový typ [size]; * /
/ * deklarace v C ++
type variable_name [size1] [size2]; * /
/ * deklarace v jazyce Java
type variable_name = new int [size1] [size2]; * /
Alternativní prohlášení/ * V jazyce Java
int [] a = new int [10]; * /
/ * V jazyce Java
int [] [] a = new int [10] [20]; * /
Celková velikost v bajtechCelkový počet bytů = sizeof (datový typ proměnné pole) * velikost pole.Celkový počet bytů = sizeof (datový typ proměnné pole) * velikost prvního indexu * velikost druhého indexu.
Parametr příjmuTo může být přijato v ukazateli, velikosti pole nebo nespojené pole.Příjem parametru musí definovat rozměr pole, který je nejvíce vpravo.
RozměryJednorozměrné.Dvourozměrný.

Definice jednorozměrného pole (1-D pole)

Jednorozměrné nebo jednorozměrné pole je považováno za „seznam proměnných podobných datových typů“ a každá proměnná může být zřetelně přístupná zadáním jeho indexu v hranatých závorkách, kterému předchází název tohoto pole.

V jazyce C ++ stačí deklarace proměnné pole s velikostí přidělit prostor v paměti. V jazyce Java se toho dosahuje ve dvou krocích. Nejprve musíte deklarovat proměnnou požadovaného typu. Za druhé, musíte přidělit paměť, aby se pole přidržovalo pomocí 'new' a přiřaďte ho deklarované proměnné array. Proto jsou pole dynamicky přidělována v jazyce Java.

Pojďme diskutovat v kontextu C ++

 // deklarace v C ++ typu název_ proměnné [size]; 

Zde typ deklaruje datový typ proměnné pole a velikost definuje počet prvků, které pole bude mít.

Pokud například chceme deklarovat pole, které bude obsahovat zůstatek každého měsíce v roce.

 // příklad int month_balance [12]; 

Měsíc _balance je proměnná pole, která bude obsahovat 12 celých čísel, která bude představovat zůstatek každého měsíce. Pokud chceme získat přístup k bilance měsíce „duben“, museli jsme jednoduše uvést název proměnné následovaný hranatou závorkou obsahující hodnotu indexu za měsíc duben, tj. „Month_balance [3]“. „Duben“ je však čtvrtým měsícem roku, ale zmínili jsme se o „[3]“, protože všechna pole mají jako index prvního prvku hodnotu 0.

V jazyce Java to lze provést jako

 // deklarace v jazyce Java název proměnné []; variable_name = nový typ [size]; 

Zde jsme zpočátku deklarovali proměnnou pole svým typem a pak jsme jí přidělili paměť pomocí 'new' a přiřazení 'new' deklarované proměnné pole. Vezměme si výše uvedený příklad, pokud chceme deklarovat pole, které bude obsahovat zůstatek v každém měsíci roku.

 // příklad int month_balance []; month_balance = new int [12]; 

Zde 'nové' přiděluje paměť matici proměnné „month_balance“, takže nyní mont_balance drží paměť pro 12 celočíselných hodnot.

Pole mohou být inicializována, když jsou deklarována. Inicializátor pole je seznam hodnot oddělených čárkami obklopených složenými závorkami.
//příklad

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

Definice dvourozměrného pole (pole 2-D)

C ++ i Java podporují vícerozměrné pole. Jednou z nejjednodušších forem vícerozměrného pole je dvojrozměrné pole nebo pole 2-D. Dvourozměrné pole může být považováno za 'pole polí' nebo 'pole jednorozměrných polí'. Chcete-li deklarovat dvourozměrnou proměnnou pole, musíme zadat název pole následovaný dvěma hranatými závorkami, kde druhý index je druhá sada hranatých závorek.

Dvourozměrné pole je uloženo ve formě matice řádek-sloupec, kde první index označuje řádek a druhý index označuje sloupec. Druhý nebo nejvíce vpravo index pole se mění velmi rychle ve srovnání s prvním nebo levým indexem při přístupu k prvkům pole.

V C ++ je dvourozměrné pole deklarováno jako;

 // deklarace v C ++ typu název_ proměnné [size1] [size2]; 

Chceme například uložit bilanci každých 30 dní v každém měsíci roku v poli 2-D.

 // příklad int month_balance [12] [30]; 

V jazyce Java je dvourozměrné pole získáno

 // deklarace v jazyce Java název proměnné = new int [size1] [size2]; // příklad int month_balance = new int [12] [30]; 

Protože nemůžeme předat celé pole jako parametr funkci, je předán ukazatel na první prvek pole. Argument, který přijímá dvourozměrné pole, musí definovat dimenzi vpravo. Rozměr vpravo je vyžadován, protože kompilátor ji potřebuje, aby potvrdil délku každého řádku, pokud chce indexovat pole správně. Není-li index pravého většiny uveden, kompilátor nemůže určit, kde se spustí další řádek.

 // příklad v jazyce Java void Receing_funct (int a [] [10]) {. . . } 

Když je paměť dynamicky přidělována do dvourozměrného pole v jazyce Java, je zadán index nejvíce vlevo a zbývající rozměry mohou být přiděleny odděleně, tj. Všechny řádky pole nemusí mít stejnou velikost.

 // příklad v jazyce 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] = nový int [30]; month_balance [4] = nový int [31]; month_balance [5] = nový int [30]; month_balance [6] = new int [31]; month_balance [7] = new int [30]; month_balance [8] = new int [31]; month_balance [9] = nový int [30]; month_balance [10] = new int [31]; month_balance [11] = nový int [30]; month_balance [12] = new int [31]; 

Ale nic takového nemá.

Klíčové rozdíly mezi jednorozměrným a dvourozměrným polem

  1. Jednorozměrné pole je seznam, jehož prvky jsou podobného datového typu. Na druhé straně, dvourozměrné pole je seznam, jehož prvky jsou pole podobného typu dat.
  2. V C ++, když je jednorozměrné pole přijato parametrem přijímací funkce, není nutné zmínit velikost pole jako, překladač chápe, že pole typu (zmíněný datový typ spolu s parametrem) s určitou délkou má být přijato. Ve dvojrozměrném poli má být zadán druhý nebo pravý index, protože kompilátor musí vědět, kde začíná jeden řádek a nový řádek.
  3. V C ++ je jednorozměrné pole uloženo v souvislém paměťovém umístění v indexovaném pořadí, zatímco dvojrozměrné pole je také uloženo v sousedním paměťovém umístění, ale protože existuje více řádků v dvourozměrném poli, úložiště za první řadou následuje druhá a třetí a tak dále.

Poznámka:

Předávání jak jednorozměrného pole, tak i dvourozměrného pole do funkce je podobné, tj. Obě jsou předávány pouze názvem pole

 // příklad pass_funt (name_of_array); 

Závěr:

V jednorozměrném i dvourozměrném poli hraje index velmi důležitou roli, protože je to jediná věc, která specificky identifikuje prvek v poli. Jednorozměrné i dvourozměrné pole může být inicializováno v okamžiku jejich deklarace.

Top