>I am working on trying to get it to work for 3 dimensions + but I would like to see how others implement this.
Just keep following the pattern.
#include <iostream>
void foo(std::size_t x, std::size_t y, std::size_t z)
{
int q = 0, ***array;
// Create and initialize dynamic 3-D "array"
array = new int**[x];
for ( std::size_t i = 0; i < x; ++i )
{
array[i] = new int *[y];
for ( std::size_t j = 0; j < y; ++j )
{
array[i][j] = new int[z];
for ( std::size_t k = 0; k < z; ++k )
{
array[i][j][k] = ++q; // initialize with something
}
}
}
// Show elements
for ( std::size_t i = 0; i < x; ++i )
{
for ( std::size_t j = 0; j < y; ++j )
{
for ( std::size_t k = 0; k < z; ++k )
{
std::cout << "array[" << i << "][" << j << "][" << k
<< "] = " << array[i][j][k] << std::endl;
}
}
}
// Free memory
for ( std::size_t i = 0; i < x; ++i )
{
for ( std::size_t j = 0; j < y; ++j )
{
delete[] array[i][j];
}
delete[] array[i];
}
delete[] array;
}
int main()
{
foo(2,3,4);
return 0;
}
/* my output
array[0][0][0] = 1
array[0][0][1] = 2
array[0][0][2] = 3
array[0][0][3] = 4
array[0][1][0] = 5
array[0][1][1] = 6
array[0][1][2] = 7
array[0][1][3] = 8
array[0][2][0] = 9
array[0][2][1] = 10
array[0][2][2] = 11
array[0][2][3] = 12
array[1][0][0] = 13
array[1][0][1] = 14
array[1][0][2] = 15
array[1][0][3] = 16
array[1][1][0] = 17
array[1][1][1] = 18
array[1][1][2] = 19
array[1][1][3] = 20
array[1][2][0] = 21
array[1][2][1] = 22
array[1][2][2] = 23
array[1][2][3] = 24
*/
Reputation Points: 2780
Solved Threads: 312
long time no c
Offline 4,790 posts
since Apr 2004