A multi-dimensional array is an array of arrays. 2-dimensional arrays are the most commonly used. They are used to store data in a tabular manner.
Consider following 2D array, which is of the size $$3 \times 5$$. For an array of size $$N \times M$$, the rows and columns are numbered from $$0$$ to $$N−1$$ and columns are numbered from $$0$$ to $$M−1$$, respectively. Any element of the array can be accessed by $$arr[i][j]$$ where $$0 \le i \lt N$$ and $$0 \le j \lt M$$. For example, in the following array, the value stored at $$arr[ 1 ][ 3 ]$$ is $$14$$.
2D array declaration:
To declare a 2D array, you must specify the following:
Row-size: Defines the number of rows
Column-size: Defines the number of columns
Type of array: Defines the type of elements to be stored in the array i.e. either a number, character, or other such datatype. A sample form of declaration is as follows:
type arr[row_size][column_size]
A sample C++ array is declared as follows:
int arr[3][5];
2D array initialization:
An array can either be initialized during or after declaration. The format of initializing an array during declaration is as follows:
type arr[row_size][column_size] = {{elements}, {elements} ... }
An example in C++ is given below:
int arr[3][5] = {{5, 12, 17, 9, 3}, {13, 4, 8, 14, 1}, {9, 6, 3, 7, 21}};
Initializing an array after declaration can be done by assigning values to each cell of 2D array, as follows.
type arr[row_size][column_size]
arr[i][j] = 14
A C++ example of initializing an array after declaration by assigning values to each cell of a 2D array is as follows:
int arr[3][5];
arr[0][0] = 5;
arr[1][3] = 14;
This is quite naive and not usually used. Instead, the array elements are read from STDIN.
Processing 2D arrays:
The most basic form of processing is to loop over the array and print all its elements, which can be done as follows:
type arr[row_size][column_size] = {{elements}, {elements} ... }
for i from 0 to row_size
for j from 0 to column_size
print arr[i][j]
A C++ example of looping over the array and printing all its elements is as follows:
#include <iostream>
using namespace std;
int main()
{
// Array declaration and initialization
int arr[3][5] = {{5, 12, 17, 9, 3}, {13, 4, 8, 14, 1}, {9, 6, 3, 7, 21}};
// Iterate over the array
for(int i=0; i<3; i++)
{
for(int j=0; j<5; j++)
{
// Print out each element
cout << arr[i][j];
}
// Print new line character after the row is printed in above loop
cout << endl;
}
return 0;
}
These methods of declaration, initialization, and processing can be extended to 3D or higher dimensional arrays.