You can implement an n-dimensional array using a single vector.
This works like this:
Say your array(A[s1]
) is one dimensional. Then array element is accessed like A[i1]
.
If your array is two dimensional(A[s1][s2]
), elements A[0][0]
to A[0][s2-1]
are stored first and then A[1][0]
to A[1][s2-1]
follows. Note that all elements are stored in sequentially in single vector. So array element is accessed like A[ i1*s2 + i2 ]
.
For three dimensional array A[s1][s2][s3]
, you can think of it as s1-number of two dimensional arrays. the two-dimensional array at A[0]
is stored first, then next two dimensional array at A[1] is stored and so on. So element can be accessed using A[ i1*s2*s3 + i2*s3 + i3]
.
An array with 'n' dimensions, can have its element accessed at [i1][i2][i3]...[in] as:
my_vector[ i1*(s2*s3*...*sn) + i2*(s3*s4*...*sn) + i3*(s4*...*sn) + ... + in ]
where s1, s2, s3, ..., sn are sizes of 1st, 2nd, ..., n-th dimension respectively.