How can I iterate over a n-dimensional array given the number of dimensions and the size of each as variables?
int n;
int size[n];
Since the number of dimensions is not fixed, I cannot write a nested loop for each dimension. I need the code to work with each number of dimensions.
In addition, it doesn't matter weather the actual data is stored in a n-dimensional array or a flat array containing all the data in a large row. Both are acceptable.
int data[16][42][14]; // n-dimensional array
int data[16 * 42 * 14]; // flat array containing the same data
Best Answer
You could use recursion, for each dimension "guess" its index and recursively invoke on a smaller problem, something along the lines of (peudo code):
where:
d
is the currently visited dimensionsize
,n
is the inputres
is a vector representing the current partial resultinvoke with
iterate(0,n,size,res)
, whereres
is initialized to an empty list.C++ code should be something like:
full code and a simple example are available on ideone