§ 15. Двумерные массивы

15.1. Описание двумерного массива

Количество индексов, по которым обращаются к элементу в массиве, определяет размерность массива.

Кроме одномерных, могут использоваться двумерные, трехмерные и другие массивы.

Двумерный массив — массив, элементами которого являются одномерные массивы. Его можно представить как таблицу с данными, в которой каждая строка — линейный массив. Обращение к элементу осуществляется по двум индексам: a[3][5] — элемент, находящийся в строке, имеющей индекс три, и столбце с индексом пять. Примером использования двумерного массива является лист электронной таблицы.

Двумерный массив описывают следующим образом:

vector <vector <тип элементов>> имя_массива
(количество строк, 
vector <тип элементов>(количество столбцов));

Структура описания кажется достаточно сложной, однако она полностью отражает суть: двумерный вектор — линейный вектор, элементами которого являются линейные векторы. Второй параметр в круглых скобках указывает, каким значением нужно заполнить каждую строку. В примере 15.1 показано, как можно описывать двумерные векторы.

По аналогичной схеме можно описывать массивы больших размерностей.

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

Для многомерных массивов используют следующие названия: одномерный массив — вектор, двумерный массив — матрица (прямоугольная таблица), трехмерный массив — куб (набор однотипных таблиц).

Для определения многомерного массива большей размерности используют понятие тензор. Четырехмерный, пятимерный, многомерный массив — тензор.

Пример 15.1. Описание двумерных массивов.

Описание двумерного массива целых чисел из 10 строк и 10 столбцов.

  vector <vector <int>> d(10, vector <int> (10));  

Описание двумерного массива, размеры которого вводят с клавиатуры:

cout << "kol-vo strok i";

cout << "stolbcov" << endl;

cin >> m >> n;

vector <vector <int>> d(m, vector <int> (n));

Использование typedef (определение типа) для описания двумерного массива:

typedef vector <int> lv;

int main()

{

  int n, m;

  cout << "kol-vo strok i";

  cout << "stolbcov" << endl;

  cin >> m >> n;

  vector <lv> d(n, lv (m));