Рецоммендед, 2020

Избор Уредника

Разлика између једнодимензионалног (1Д) и дводимензионалног (2Д) поља

Низ је скуп варијабли сличних типова података и односе се на заједнички назив. Одређеном елементу у низу приступа се одређеним индексом тог низа. Низови у Јави раде другачије у односу на Ц ++. Главна тема наше дискусије је разлика између Једно-димензионалног и Дводимензионалног низа. Једносимензионални низ је листа варијабли са истим типом података, док је дводимензионални низ 'низ поља' који имају сличне типове података. Ц ++ немају обавезну проверу на низовима, док Јава има строгу везану проверу поља.

Дакле, почнимо са разликама између низа Оне-дименсион и Тво-Дименсион заједно са табелом поређења.

Табела за упоређивање:

Основа за поређењеОне-ДименсионалДводимензионални
Басиц
Похраните једну листу елемената сличног типа података.Похраните 'листу листа' или 'низ поља' или 'низ једнодимензионалних поља'.
Декларација/ * декларација у Ц ++
упишите променљиво_име [величина]; * /
/ * декларација у Јави
типе вариабле_наме [];
вариабле_наме = нев типе [сизе]; * / \ Т
/ * декларација у Ц ++
типе вариабле_наме [сизе1] [сизе2]; * / \ Т
/ * декларација у Јави
типе вариабле_наме = нев инт [сизе1] [сизе2]; * / \ Т
Алтернативе Децларатион/ * У Јава
инт [] а = нев инт [10]; * / \ Т
/ * У Јава
инт [] [] а = новое инт [10] [20]; * / \ Т
Укупна величина у бајтовимаТотал Битес = сизеоф (тип података варијабле низа) * величина низа.Укупни бајтови = величина (тип података променљиве) * величина првог индекса * величина другог индекса.
Параметар примањаМоже се примити у показивачу, величинском низу или у не-распоређеном низу.Примање параметра мора дефинирати крајњу десну димензију поља.
ДимензијеЈедна димензија.Дводимензионално.

Дефиниција једнодимензионалног низа (1-Д низ)

Једно-димензионални или једно-димензионални низ се сматра "листом варијабли сличних типова података", а свакој варијабли се може јасно приступити навођењем индекса у углатим заградама испред имена тог поља.

У Ц ++, декларација варијабле низа са величином је довољна да им се додели простор у меморији. У Јави, ово се постиже у два корака. Прво, морате декларисати променљиву жељеног типа. Друго, морате додијелити меморију за држање низа користећи 'нев' и додијелити га декларираној варијабли низа. Дакле, низови се динамички алоцирају у Јави.

Размотримо у Ц ++ контексту

 // декларација у Ц ++ типу променљиве [величина]; 

Овде тип пријављује тип података променљиве низа, а величина одређује број елемената који ће поље држати.

На пример, ако желимо да декларишемо низ који ће садржати биланс сваког месеца у години.

 // пример инт месец_баланце [12]; 

Месецни баланс је варијабла низа која ће садржати 12 целих бројева, који ће представљати биланс сваког месеца. Сада, ако желимо да приступимо балансу месеца 'Април', једноставно смо морали да споменемо име променљиве праћено квадратном заградом која садржи вредност индекса за месец април, тј. 'Монтх_баланце [3]'. Али као 'Април' је четврти мјесец у години, али смо споменули '[3]' јер сви низови имају 0 као индекс њиховог првог елемента.

У Јави, то се може урадити као

 // декларација у Јава типу променљиви_име []; вариабле_наме = нев типе [сизе]; 

Овде смо иницијално декларисали променљиву низа својим типом и онда смо јој додијелили меморију користећи 'нев' и додијелили 'нев' декларираној варијабли низа. Узмимо на пример пример ако желимо да декларишемо низ који ће садржати биланс у сваком месецу године.

 // пример инт месец_баланце []; монтх_баланце = нев инт [12]; 

Овде 'нев' додељује меморију променљивој низа 'монтх_баланце', тако да сада монт_баланце сада држи меморију за 12 целобројних вредности.

Низови се могу иницијализовати када су декларисани. Иницијализатор низа је листа вриједности раздвојених зарезима које су окружене витичастим заградама.
// екампле

 инт монтх_баланце = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450.180}; 

Дефиниција дводимензионалног поља (2-Д низ)

И Ц ++ и Јава подржавају вишедимензионални низ. Један од најједноставнијих облика вишедимензионалног низа је дводимензионални низ или 2-Д низ. Дводимензионални низ може се сматрати 'низом поља' или 'низом једнодимензионалних низова'. Да бисмо декларисали дводимензионалну варијаблу низа, морамо да наведемо име поља праћено са два угла у загради где је други индекс други скуп угластих заграда.

Дводимензионални низ се складишти у облику матрице редова-колона, где први индекс указује на ред, а други на колону. Други или крајњи десни индекс поља се веома брзо мења у поређењу са првим или левим индексом док приступамо елементима низа.

У Ц ++, дводимензионални низ је декларисан као;

 // декларација у Ц ++ типу променљиве [величина1] [величина2]; 

На пример, желимо да ускладиштимо биланс сваких 30 дана у сваком месецу у години, у 2-Д низу.

 // пример инт месец_баланце [12] [30]; 

У Јави се дводимензионални низ добија

 // декларација у Јава типу вариабле_наме = нев инт [сизе1] [сизе2]; // пример инт месец_баланце = ново инт [12] [30]; 

Пошто не можемо проследити читав низ као параметар функцији, прослеђује се показивач на први елемент низа. Аргумент који прима дводимензионални низ мора да дефинише димензију највише десног. Крајња десна димензија је потребна зато што је компајлер потребна, да потврди дужину сваког реда ако жели да индексира поље исправно. Ако се не спомиње индекс највише десно, компајлер не може да одреди где почиње следећи ред.

 // пример в Јава воид рецеивеинг_фунцт (инт а [] [10]) {. . . } 

Када се меморија динамички алоцира на дводимензионални низ у Јави, наводи се индекс највишег левог, а преостале димензије могу бити одвојено додељене, тј. Сви редови низа не морају бити исте величине.

 // пример у Јава инт монтх_баланце = нев инт [12] []; монтх_баланце [0] = нев инт [31]; монтх_баланце [1] = нев инт [28]; монтх_баланце [2] = нев инт [31]; монтх_баланце [3] = нев инт [30]; монтх_баланце [4] = нев инт [31]; монтх_баланце [5] = нев инт [30]; монтх_баланце [6] = нев инт [31]; монтх_баланце [7] = нев инт [30]; монтх_баланце [8] = нев инт [31]; монтх_баланце [9] = нев инт [30]; монтх_баланце [10] = нев инт [31]; монтх_баланце [11] = нев инт [30]; монтх_баланце [12] = нев инт [31]; 

Али нема предности у томе.

Кључне разлике између једнодимензионалног и дводимензионалног поља

  1. Једносимензионални низ је листа чији су елементи сличног типа. Са друге стране, дводимензионални низ је листа чији су елементи низ сличних типова података.
  2. У Ц ++, када је једнодимензионални низ примљен од параметра пријемне функције, није потребно спомињати величину низа, јер компајлер разумије да је низ типа (споменути тип података заједно са параметром) са неком дужином треба примити. У дводимензионалном низу, други или десни индекс треба да буде наведен јер компајлер мора да зна где се завршава један ред и почиње нови ред.
  3. У Ц ++, једнодимензионални низ је похрањен у суседној меморијској локацији у индексираном редослиједу, док је дводимензионални низ такођер похрањен у сусједној меморијској локацији, али како постоји више редова у дводимензионалном низу, похрана први ред прати други, трећи и тако даље.

Белешка:

Прелазак и на једно-димензионални низ као и на дводимензионални низ на функцију је сличан, тј. Оба се прослеђују само именом поља

 // екампле пассинг_фунт (наме_оф_арраи); 

Закључак:

У И једнодимензионалном и дводимензионалном низу, индекс игра веома важну улогу јер је то једина ствар која специфично идентификује елемент у низу. И једно-димензионални и дводимензионални низ могу се иницијализирати у вријеме њихове декларације.

Top