10. Обобщение — мать учения
В дальнейшем речь будет вестись о способах работы только с обычными
статическими массивами.
Многомерные массивы
Пока мы ограничивались упоминанием простых, линейных последовательностей элементов. Но более сложные структуры данных имеют, как правило, большую размерность. Например, при работе с электронной таблицей используются два измерения — строка и столбец. В большинстве стратегических компьютерных игр поле тоже двумерное — ширина и высота. Такие структуры было бы удобно и описывать соответствующим образом.
Как это сделать в Си++? Очень просто. Допустим, требуется подготовить массив, представляющий собой содержимое числовой электронной таблицы размером 1024 строки на 256 столбцов. Выглядеть нужное описание будет примерно так:
int excel [256] [1024] ;
Переменная excel будет состоять из 256 последовательностей, по 1024 элемента типа int в каждой. Чтобы получить значение таблицы с координатами .(100,100) (если счет идет с нуля), надо записать:
excel [100][100] Можно описать массив excel и по другому:
int excel [1024][256] ;
Смысл от этого не сильно изменится (1024 строки по 256 элементов).
В каком порядке указывать размерности массива, вопрос не праздный. Лучше всего придерживаться такого порядка, который позволит обращаться к элементам массива максимально наглядно. В частности, многие из нас со школы привыкли, что при записи координат на плоскости сначала указывается значение по оси X, а затем — по оси Y. Тогда область поверхности (например, карту) размером 64 единицы в ширину (ось X) и 128 единиц в «высоту» (ось Y) лучше описать так:
int Map [64] [128];
чтобы потом обращаться к нужным элементам в привычном порядке:
сначала указывать координату X, а потом Y:
Мар[х-4][у+1]
176