Dynamically allocates a zero-based 2D block (matrix) of data.

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

View versions (2)

Interface

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

using namespace Computing::Array;

Overview

Dynamically allocates a zero-based 2D block of memory. This memory block is continuous, and is in column then row order

Ordering of data
Figure 1: Ordering of data

For example, with an allocation of the type:

float **a = matrix<float>(2,3);

Then <tt>a[1][4] === a[2][0]</tt>.

The opposite of this function is <em> free_matrix </em>.

Example 1

#include <cstdio>
#include <codecogs/computing/array/matrix.h>
using namespace Computing;

int main()
{
  // allocate some memory, 5 rows, 3 columns
  int **A = Array::matrix<int>(5,3);

  // initialize with some data (multiplication table)
  for(int j=0; j<5; j++)
    for(int i=0; i<3; i++)
      A[j][i] = (i+1)*(j+1);

  // convert to one-dimensional array
  int *B = A[0];
  for(int i=0; i<15; i++)
    printf(" %d", B[i]);

  // tidy up
  Array::free_matrix(A);
}

Output:

1 2 3 2 4 6 3 6 9 4 8 12 5 10 15

Parameters

Rows
The 2nd dimension of a matrix.
Columns
The 1st (primary) dimension of a matrix.

You should always use <em> free_matrix </em> to de-allocate memory allocated to this structure.

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

FUNCTION

free_matrix

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

The opposite of this function is <em> matrix </em>

Parameters

Matrix
is the 2D data structure to delete.
Author

Will Bateman (February 2005)