Dynamically allocates a zero_based 3D block (cube) of data.

View versions (2)

Interface

#include <codecogs/computing/array/cube.h>

using namespace Computing::Array;

Overview

Dynamically allocates a zero_based 3D cube of memory. This memory block is continuous, and is in column, row, and finally depth order.

Ordering of data
Figure 1: Ordering of data

The opposite of this function is free_cube.

Example 1

With an allocation of the type:

#include <stdio.h>
#include <codecogs/computing/array/cube.h>
using namespace Computing;

int main()
{
  // create a cube 2 deep (0-1), 4 rows (0-3) and 6 columns (0-5)
  char*** c = Array::cube<char>(2,4,6);
  for(int i=0; i<6; i++)
    for(int j=0; j<4; j++)
      for(int k=0; k<2; k++)
        c[k][j][i] = i+j+k;

  for(int i=0; i<(6*4); i++) {
    if(i % 6 == 0) printf("  ");
      printf("%hd ",c[0][0][i]);
  }

  printf("\n");

  for(int i=6*4; i<6*4*2; i++) {
    if(i % 6 == 0) printf("  ");
      printf("%hd ",c[0][0][i]);
  }

  printf("\n");

  Array::free_cube<char>(c);                     // de-allocated the memory from stack
  return 0;
}

Output: (with space between rows)

0 1 2 3 4 5   1 2 3 4 5 6   2 3 4 5 6 7   3 4 5 6 7 8
1 2 3 4 5 6   2 3 4 5 6 7   3 4 5 6 7 8   4 5 6 7 8 9

Parameters

Depth
The 3rd dimension of a cube.
Rows
The 2nd dimension of a cube.
Columns
The 1st (primary) dimension of a cube.

You should always use free_cube to de-allocate memory allocated to this structure.

GPL Licence — free for non commercial use. See Licence details.

FUNCTION

free_cube

Removes any dynamically allocated memory for a 3D structure from the stack. This function is usually used on data structures created using cube<...>, though it can also be used on other 3D types, so long as the memory is continuously allocated with a pointers to pointers setup.

The opposite of this function is cube.

Parameters

Cube
is the 3D data structure to delete.
Author

Will Bateman (February 2005)