Рекомендуємо, 2024

Вибір Редакції

Різниця між одномірним (1D) і двовимірним (2D) масивом

Масив - це сукупність змінних, які мають подібні типи даних і посилаються на загальну назву. До певного елемента масиву звертається певний індекс цього масиву. Масиви в Java працюють інакше, ніж C ++. Основною темою нашого обговорення є різниця між масивом One-dimension та Two-Dimension. Одномірний масив - це список змінних з тим же типом даних, тоді як двовимірний масив - це масив масивів, що має подібні типи даних. C ++ не мають обов'язкової перевірки на масивах, тоді як Java має сувору перевірку на масивах.

Отже, давайте почнемо з відмінностей між масивом One-dimension і Two-Dimension разом з діаграмою порівняння.

Діаграма порівняння:

Основа для порівнянняОдномірнийДвовимірні
Основний
Зберігати один список елементів аналогічного типу даних.Зберігайте "список списків" або "масив масивів" або "масив одновимірних масивів".
Декларація/ * оголошення в C ++
тип змінної_назва [розмір]; * /
/ * оголошення в Java
тип variable_name [];
variable_name = new type [розмір]; * /
/ * оголошення в C ++
тип variable_name [size1] [size2]; * /
/ * оголошення в Java
типу variable_name = new int [size1] [size2]; * /
Альтернативна декларація/ * На Java
int [] a = new int [10]; * /
/ * На Java
int [] [] a = new int [10] [20]; * /
Загальний розмір у байтахВсього байт = sizeof (тип даних змінної масиву) * розмір масиву.Всього байт = sizeof (тип даних змінної масиву) * розмір першого індексу * розмір другого індексу.
Параметр отриманняВін може бути отриманий в покажчику, розмірному масиві або нерозміщеному масиві.Параметр прийому його повинен визначити самий правий розмір масиву.
РозміриОдномірне.Двовимірні.

Визначення одновимірного масиву (1-D масив)

Одновимірний або одновимірний масив розглядається як "список змінних аналогічних типів даних", і кожну змінну можна чітко отримати, вказавши її індекс у квадратних дужках, що передує назві цього масиву.

У C ++ оголошення розміру змінної масиву з розміром достатньо, щоб виділити для них простір у пам'яті. У Java це досягається у два етапи. По-перше, потрібно оголосити змінну потрібного типу. По-друге, ви повинні виділити пам'ять для утримання масиву за допомогою 'new' і призначити його оголошеній змінної масиву. Таким чином, масиви динамічно виділяються в Java.

Розглянемо в C ++ контексті

 // оголошення в C ++ типу variable_name [size]; 

Тут тип оголошує тип даних змінної масиву, а розмір визначає кількість елемента, який буде мати масив.

Наприклад, якщо ми хочемо оголосити масив, який буде містити баланс кожного місяця року.

 // приклад int month_balance [12]; 

Місячний _баланс - це змінна масиву, яка містить 12 цілих чисел, які представлятимуть баланс кожного місяця. Тепер, якщо ми хочемо отримати доступ до балансу місяця «Квітень», ми просто повинні згадати ім'я змінної, за якою слід квадратна дужка, що містить значення індексу за квітень, тобто «month_balance [3]». Але, як «квітень» - це четвертий місяць року, але ми згадали «[3]», тому що всі масиви мають 0 як індекс свого першого елемента.

У Java це можна зробити так

 // оголошення в Java типу variable_name []; variable_name = new type [розмір]; 

Тут спочатку ми оголосили змінну масиву своїм типом, а потім виділили їй пам'ять, використовуючи 'new', і призначили 'new' для оголошеної змінної масиву. Давайте розглянемо вище приклад, якщо ми хочемо оголосити масив, який буде містити баланс у кожному місяці року.

 // приклад int month_balance []; month_balance = new int [12]; 

Тут 'new' виділяє пам'ять до змінної масиву “month_balance”, тому тепер mont_balance тепер зберігатиме пам'ять для 12 цілих значень.

Масиви можуть бути ініціалізовані, коли вони оголошені. Ініціалізатор масиву - це список значень, розділених комами, оточених фігурними дужками.
// приклад

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

Визначення двовимірного масиву (2-D масив)

І C ++, і Java підтримують багатовимірний масив. Однією з найпростіших форм багатовимірного масиву є двовимірний масив або 2-D масив. Двовимірний масив можна розглядати як 'масив масивів' або 'масив одновимірних масивів'. Щоб оголосити двовимірну змінну масиву, потрібно вказати ім'я масиву, за яким слідують дві квадратні дужки, де другий індекс є другим набором квадратних дужок.

Двовимірний масив зберігається у вигляді матриці рядків-стовпчиків, де перший індекс вказує рядок, а другий - індекс. Другий або правий індекс масиву дуже швидко змінюється порівняно з першим або лівим індексом під час доступу до елементів масиву.

У C ++ двовимірний масив оголошується як;

 // оголошення в C ++ типу variable_name [size1] [size2]; 

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

 // приклад int month_balance [12] [30]; 

У Java двовимірний масив отримується

 // оголошення в Java типу variable_name = new int [size1] [size2]; // приклад int month_balance = new int [12] [30]; 

Оскільки ми не можемо передавати весь масив як параметр функції, передається покажчик на перший елемент масиву. Аргумент, що приймає двовимірний масив, повинен визначити, що він має найбільший розмір. Найбільший правий розмір необхідний, оскільки компілятор потребує його, щоб підтвердити довжину кожного рядка, якщо він хоче правильно індексувати масив. Якщо не згадується правий індекс, компілятор не може визначити, де починається наступний рядок.

 // приклад в Java void receiveing_funct (int a [] [10]) {. . . } 

Коли пам'ять динамічно виділяється для двовимірного масиву в Java, визначається найбільший індекс ліворуч, а інші розміри можуть бути виділені окремо, тобто всі рядки масиву можуть бути не одного розміру.

 // приклад в 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] = new int [31]; 

Але цього немає.

Ключові відмінності між одновимірним і двовимірним масивом

  1. Одномірний масив є списком, елементи якого мають подібний тип даних. З іншого боку, двовимірний масив є списком, елементи якого є масивом подібного типу даних.
  2. У C ++, коли одновимірний масив отриманий параметром приймальної функції, не потрібно згадувати розмір масиву, оскільки, компілятор розуміє, що масив типу (згаданий тип даних разом з параметром) з деякою довжиною має бути отримано. У двовимірному масиві другий або правий індекс повинен бути вказаний, оскільки компілятор повинен знати, де закінчується один рядок, і починається новий рядок.
  3. У C ++ одновимірний масив зберігається в безперервному місці пам'яті в індексованому порядку, тоді як двовимірний масив також зберігається в місці з суміжною пам'яттю, але, оскільки існує кілька рядків у двовимірному масиві, сховище за першим рядком йде друга, третя і так далі.

Примітка:

Передача як одновимірного масиву, так і двовимірного масиву у функцію аналогічна, тобто обидва передаються тільки назвою масиву

 // приклад pass_funt (name_of_array); 

Висновок:

В обох одновимірних і двовимірних масивах індекс відіграє дуже важливу роль, оскільки це єдина річ, яка конкретно ідентифікує елемент в масиві. Обидва одновимірного і двовимірного масиву можна ініціалізувати під час їх декларування.

Top