Урок 78. Многомерные массивы

   ⁄ 

 Обновлено 2 Сен 2017

  ⁄   

Элементы массива могут быть любого типа данных, даже массива! Массив массивов называется многомерным массивом.

Поскольку у нас есть 2 индекса, то это двумерный массив.

В двумерном массиве первый (левый) индекс принято читать как количество строк, а второй (правый) как количество столбцов. Описанный выше двумерный массив можно представить следующим образом:

[0][0]  [0][1]  [0][2]  [0][3]  // строка 0
[1][0]  [1][1]  [1][2]  [1][3]  // строка 1

Чтобы получить доступ к элементам двумерного массива — просто используйте два индекса:

Инициализация двумерных массивов

Для инициализации двумерного массива проще всего использовать вложенные фигурные скобки, где каждый набор значений соответствует определенной строке:

Хотя некоторые компиляторы могут позволить вам упустить внутренние фигурные скобки, мы настоятельно рекомендуем указывать их в любом случае, как для удобства чтения, так и из-за того, как C++ заменяет отсутствующие инициализаторы значением 0.

В двумерном массиве со списком инициализаторов можно не указывать только левый индекс (длину массива):

Компилятор может сам вычислить количество строк в массиве. Однако не указывать два индекса – это уже ошибка:

Подобно обычным массивам, многомерные массивы можно инициализировать значением 0 следующим образом:

Обратите внимание, это работает только в том случае, если вы явно объявляете длину массива (указываете левый индекс)! В противном случае вы получите двумерный массив с 1 строкой.

Доступ к элементам в двумерном массиве

Для доступа ко всем элементам двумерного массива требуется два цикла: один для строк и один для столбцов. Поскольку доступ к двумерным массивам обычно выполняется по строкам, то левый индекс используется в качестве внешнего цикла.

Многомерные массивы больше двух измерений

Многомерные массивы могут быть больше двух измерений. Например, объявление трехмерного массива:

Трехмерные массивы трудно инициализировать любым интуитивным способом с использованием списка инициализаторов, поэтому лучше инициализировать весь массив значением 0 и явно присваивать значения с помощью вложенных циклов.

Доступ к элементам трехмерного массива осуществляется так же, как и к элементам двумерного массива:

Пример двумерного массива

Рассмотрим практический пример двумерного массива:

Эта программа вычисляет и выводит таблицу умножения от 1 до 9 (включительно). Обратите внимание, при выводе таблицы в цикле for мы начинаем с 1 вместо 0. Это делается с целью предотвращения вывода нулевой строки с нулевыми столбцами, дабы в результате у нас не было строки с одними нулями! Результат:

1   2    3    4    5    6    7    8    9
2   4    6    8    10   12   14   16   18
3   6    9    12   15   18   21   24   27
4   8    12   16   20   24   28   32   36
5   10   15   20   25   30   35   40   45
6   12   18   24   30   36   42   48   54
7   14   21   28   35   42   49   56   63
8   16   24   32   40   48   56   64   72
9   18   27   36   45   54   63   72   81

Двумерные массивы обычно используются в играх на основе плитки (игры tile-based), где каждый элемент массива представляет собой один фрагмент (плитку). Они также используются в компьютерной 3D графике (в виде матриц) для вращения, масштабирования и отражения фигур.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (7 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в:
Подписаться на обновления:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *