C ++ Многомерные массивы в куче - PullRequest
22 голосов
/ 04 декабря 2008

Как бы я использовал динамическое размещение многомерного массива?

Ответы [ 11 ]

0 голосов
/ 04 декабря 2008

Вы можете индексировать одномерное как 2, 3 или N-мерное, если вы просто располагаете правильное количество элементов. Например, если у меня есть 10 строк и 10 столбцов, я знаю, что если я нахожусь в строке 3, мне придется пройти по крайней мере 30 элементов, чтобы добраться до него.

Почему-то я предпочитаю эту запись для простых двумерных массивов, поскольку мне не нужно беспокоиться о вложенных уровнях указателей. Недостатком является беспорядочная запись индекса. Вот пример с 2D-массивом с n строками и m столбцами:

int *matrix = new int[n*m];

//set element (3,7) to 10
matrix[3*m+7] = 10;

//print the matrix
for (int i = 0; i < n; i++) {
  for (int j = 0; j < m; j++) {
    cout << matrix[i*m+j] << ' ';
  }
  cout << '\n';
}
...