Распределение 2D-матрицы в куче в C ++

Я ищу способ разместить матрицу 2D (m x n) на куча, в которой элементы последовательные в памяти. В настоящее время я знаю два способа сделать это:

Первый подход

int* M = new int[m * n];
  • Pro: Размер M может быть определен динамически.
  • Против: Индексирование M немного затруднительно. ( M [i * m + j] )

Второй подход

typedef int dim[2];
dim* M = new dim[n];
  • Pro: Индексирование M - это именно то, что я хочу.
  • Против: Размер первого измерения (м) не может быть установлен динамически.

Вопрос

Есть ли способ динамически распределить 2D-матрицу в куче, где я могу индексировать элементы с помощью [i] [j] и , распределение памяти является последовательным?

Я знаю, что для этого имеет смысл использовать класс, но я специально ищу способ, описанный выше.

5
задан Woltan 7 October 2011 в 08:26
поделиться