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

Выбор редакции

Разница между одномерным (1D) и двумерным (2D) массивом

Массив - это набор переменных, которые имеют сходные типы данных и имеют общее имя. Доступ к конкретному элементу в массиве осуществляется с помощью определенного индекса этого массива. Массивы в Java работают иначе, чем в C ++. Основной темой нашего обсуждения является различие между одномерным и двумерным массивом. Одномерный массив - это список переменных с одним и тем же типом данных, тогда как двумерный массив - это «массив массивов», имеющий схожие типы данных. В C ++ нет проверки границ для массивов, тогда как в Java есть строгая проверка границ для массивов.

Итак, давайте начнем с различий между одномерным и двухмерным массивом вместе со сравнительной таблицей.

Сравнительная таблица:

Основа для сравненияОдномерныйДвумерный
основной
Хранить единый список элементов схожего типа данных.Хранить «список списков» или «массив массивов» или «массив одномерных массивов».
декларация/ * объявление в C ++
тип имя_переменной [размер]; * /
/ * объявление в Java
тип имя_переменной [];
имя_переменной = новый тип [размер]; * /
/ * объявление в C ++
тип имя_переменной [размер1] [размер2]; * /
/ * объявление в Java
тип переменная_имя = новый int [размер1] [размер2]; * /
Альтернативная декларация/ * В Java
int [] a = new int [10]; * /
/ * В Java
int [] [] a = new int [10] [20]; * /
Общий размер в байтахВсего байт = sizeof (тип данных переменной массива) * размер массива.Всего байт = sizeof (тип данных переменной массива) * размер первого индекса * размер второго индекса.
Параметр полученияОн может быть получен в виде указателя, массива размера или массива без размера.Получающий его параметр должен определять самый правый размер массива.
РазмерыОдномерныйДвумерный.

Определение одномерного массива (одномерный массив)

Одномерный или одномерный массив рассматривается как «список переменных схожих типов данных», и к каждой переменной можно получить отдельный доступ, указав ее индекс в квадратных скобках, перед которым следует имя этого массива.

В C ++ объявления переменной массива с размером достаточно, чтобы выделить для них место в памяти. В Java это достигается в два этапа. Во-первых, вы должны объявить переменную нужного типа. Во-вторых, вы должны выделить память для хранения массива, используя 'new', и назначить ее объявленной переменной массива. Следовательно, массивы динамически размещаются в Java.

Давайте обсудим в контексте C ++

 // объявление в C ++ тип variable_name [size]; 

Здесь тип объявляет тип данных переменной массива, а размер определяет количество элементов, которые будет содержать массив.

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

 // пример int month_balance [12]; 

Month _balance - это переменная массива, которая будет содержать 12 целых чисел, которые будут представлять баланс каждого месяца. Теперь, если мы хотим получить доступ к балансу месяца «апрель», мы просто должны упомянуть имя переменной, за которым следует квадратная скобка, содержащая значение индекса для месяца апреля, то есть «month_balance [3]». Но поскольку «апрель» является четвертым месяцем года, но мы упомянули «[3]», потому что все массивы имеют 0 в качестве индекса их первого элемента.

В Java это можно сделать как

 // объявление в типе Java имя_переменной []; имя_переменной = новый тип [размер]; 

Здесь изначально мы объявили переменную массива с ее типом, а затем мы выделили ей память, используя '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}; 

Определение двумерного массива (двумерный массив)

И C ++, и Java поддерживают многомерный массив. Одной из самых простых форм многомерного массива является двумерный массив или двумерный массив. Двумерный массив можно рассматривать как «массив массивов» или «массив одномерных массивов». Чтобы объявить переменную двумерного массива, мы должны указать имя массива, за которым следуют две квадратные скобки, где второй индекс - это второй набор квадратных скобок.

Двумерный массив хранится в форме матрицы строки-столбца, где первый индекс указывает строку, а второй индекс указывает столбец. Второй или самый правый индекс массива изменяется очень быстро по сравнению с первым или самым левым индексом при доступе к элементам массива.

В C ++ двумерный массив объявлен как;

 // объявление в C ++ type_name [size1] [size2]; 

Например, мы хотим хранить остаток каждые 30 дней в каждом месяце года в двумерном массиве.

 // пример int month_balance [12] [30]; 

В Java двумерный массив получается

 // объявление в типе Java имя_переменной = 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 ++ одномерный массив хранится в смежной области памяти в индексированном порядке, тогда как двумерный массив также хранится в смежной области памяти, но, поскольку в двумерном массиве есть несколько строк, хранение за первым рядом следует второй, третий и т. д.

Замечания:

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

 // пример hosting_funt (name_of_array); 

Заключение:

Как в одномерном, так и в двумерном массиве индекс играет очень важную роль, потому что это единственное, что конкретно идентифицирует элемент в массиве. Как одномерный, так и двумерный массив могут быть инициализированы во время их объявления.

Top