Как запросить динамический c 2D-массив только с одним указателем, используя new в c ++ - PullRequest
0 голосов
/ 04 апреля 2020

Я читал о 2D-массивах и о том, как распределять и получать значения в стеке потока. Таким образом, предложение состоит в том, чтобы выделить только блок памяти следующим образом:

int *ary = new int[sizeX*sizeY];

и получить к нему доступ следующим образом:

ary[i*sizeX+j]

, но давайте предположим, что sizeX равен 2, а sizeY равен 3, поэтому мы получим для позиции i = 0 & j = 2 и i = 1 & j = 0 одно и то же значение, для каждого из них значение 2, потому что 0 * 2 + 2 = 2 и 1 * 2 + 0 = 2, поэтому мы видим вызов той же переменной в массиве, но мы хотим другую позицию. Я что-то упустил или есть предложения, как сделать это правильно? Заранее спасибо!

1 Ответ

1 голос
/ 04 апреля 2020

Вы должны умножить i на размер второго измерения, поэтому, если sizeX равно 2, j = 2 не существует. Предполагая, что X - это ваше первое измерение, а Y - это ваше второе измерение, вы захотите сделать i * sizeY + j.

...