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

You're viewing an older version of this page (#107). View the current version.

View versions (1)

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
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>

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 2D data structure to delete.
Author

Will Bateman (February 2005)