Как вычислить индекс элемента многомерного массива в одномерном
Значит, имеется четырехмерный массив вот с такой размерностью a[3][2][2][5] Как математически представить его в виде одномерного массива? Т.е. мне необходим индекс каждого элемента массива, но в одномерном пространстве.
Спасибо!
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
При нулевой базе и расположению многомерных массивов без пустых мест "по строкам" (последний индекс изменяется чаще всего), как в большинстве языков, индекс для элемента A[i][j][k][l] массива размерностью A[a][b][c][d] пересчитывается в B[idx] так:
idx = l + (d) * k + (d * c) * j + (d * c * b) * i =
l + d * (k + c * (j + (b * i)))
//уменьшим количество умножений по заветам дядюшки Горнера,
При большом количестве подобных операций выгоднее предвычислить и использовать готовые частичные произведения размерностей, начиная с младшей.