• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 223
  • Last Modified:

3-D Arrays in C++

I'm trying to recall how to build a 3-D array in C++.  I know that 2-D arrays can be declared as int myArray[#rows][#cols] but if I remember correctly, doesn't a 3-D have to be constructed with new int** filling each single dimension array then adding the next dimension or layer on top of it?  Along those same lines, after the array is constructed, what is the order or dimension that the brackets refer to?  ie.  myArray[#deep][#rows][#cols] ?? isn't that the most widely accepted abstracted view?  Elaborating a little bit more, to calculate the address of an element in integer myArray[2][3][4] in myArray with the following dimensions myArray[5][6][7]  the calculation would be something like this address = base + ((2*6+4) * 7 + 3) * (sizeof int)
2 Solutions
1. You may still declare it as:
int myArray[5][5][5];

2. You may call the dimensions whatever you want, ie. rows, colls, deep or year, month, day etc.
  you reference the elements in the same way it was declared.  int myArray[1st-dim][2nd-dim][3rd-dim];

3. You don't have to "calculate" the address of course, just use &(myArray[2][3][4]);
...but, in your example it would be:
address = base + ((2 * (6 + 7)) + (3 * 6) + 4) * sizeof(int);

Jaime OlivaresSoftware ArchitectCommented:
Have a look to a previous question where I implement a 3D class, you will notice similar calculations:
VBStudentAuthor Commented:
Thanks for the help and the prompt response.  I actually needed both solutions.  Thanks to both of you.

Featured Post

2018 Annual Membership Survey

Here at Experts Exchange, we strive to give members the best experience. Help us improve the site by taking this survey today! (Bonus: Be entered to win a great tech prize for participating!)

Tackle projects and never again get stuck behind a technical roadblock.
Join Now