Для C++, я видел несколько рекомендаций использовать 2D массивов следующим образом:Как обобщить простые 2D-массивы?
int* theArray = new int[d1 * d2];
Элемент (I, J), то можно получить следующим образом:
int myInt = theArray[i + d2 * j];
У меня два вопроса : Во-первых, как получить доступ к 3D-массиву? Существует ли общая формула? Второе и более важное, будет ли штраф за исполнение, если я буду использовать функции
int getNumber(int i, int j, int k)
void setNumber(int i, int j, int k, int theValue)
для извлечения и установки номера? Я не хочу вкручивать его где-то в коде, а затем трать навсегда найти, где этот винт.
Индексирование - это 'i + d2 * j + d2 * d3 * k', но это основной математический вопрос, а не программирование. –
btw, это зависит от порядка размеров. –
Поскольку это помечено 'array', я просто должен был ответить: используйте' std :: array', если требуется установить размер времени выполнения, std :: vector. Оптимизируйте далее только после профилирования. –