int [n] [m], где n и m известны во время выполнения
Мне часто нужно создать 2D-массив с шириной и высотой (пусть они будут n и m) неизвестными во время компиляции, обычно я пишу:
vector<int> arr(n * m);
И я получаю доступ к элементам вручную с помощью:
arr[j * m + i]
Мне недавно сказали, что я мог бы вместо этого написать:
int arr[n][m] // n and m still only known at runtime.
Итак, вот 2 вопроса:
Это поведение разрешено стандартом C ++?Как мне передать такой массив в функцию? g ++ сообщает, что arr имеет типint (*)[n]
, но опять же, n является динамическим и неизвестным за пределами функции, в которой оно объявлено (main
).