Up until now, all of our arrays
have been one-dimensional arrays. These arrays have had
"length", but the "width" (or height) remained as only one cell.
|
|
We are now ready to discuss
two-dimensional arrays, called matrices
(singular: matrix). A
matrix resembles a table with rows and columns. |
It is possible for arrays to have multiple dimension.
A three dimensional array, for example, has 3 subscripts, where each dimension is represented as a subscript in the array.
While it is possible for arrays to have any number of dimensions, most arrays
are of one or two dimensions.
The elements of a matrix must be of the same data type.
Example: The Computer Club is
participating in a series of Programming Meets. The table below shows
the Club's results, where the maximum score for each contestant in a meet is
25.
Name |
Meet
#1 |
Meet
#2 |
Meet
#3 |
Meet
#4 |
Meet
#5 |
Robbins |
20 |
18 |
22 |
20 |
16 |
Montgomery |
18 |
20 |
18 |
21 |
20 |
Stevenson |
16 |
18 |
16 |
20 |
24 |
Norton |
25 |
24 |
22 |
24 |
25 |
Note: Although the
students' names and the meet numbers are shown, they are not part of the actual
data and are not part of the matrix. Remember, the data in a two-dimensional array is always of the same data
type.
The data displayed in this table consists of 20 values --
four rows by five columns. This matrix will have 20 cells, or
elements.
Just as we used a special header file for arrays, we will also be
using a special header file for matrices. The
apmatrix class, implements
matrices with "safe" subscripts, similar to what we enjoyed in the
apvector class. If a program attempts to use an out-of-bounds subscript value
when working with a matrix, the program will be aborted and an error message
will appear.
When you define storage for a matrix (a multi-dimensional array), you must inform
C++ that the array has more than one dimension by putting more than one subscript in parentheses after the array name.
The following declaration would be used to store the data shown in the table
above:
apmatrix <int> ClubScores(4 , 5); // Declares
a 2-D array
This declaration creates a matrix with the following subscripted elements:
|
columns |
rows
|
[0][0] |
[0][1] |
[0][2] |
[0][3] |
[0][4] |
[1][0] |
[1][1] |
[1][2] |
[1][3] |
[1][4] |
[2][0] |
[2][1] |
[2][2] |
[2][3] |
[2][4] |
[3][0] |
[3][1] |
[3][2] |
[3][3] |
[3][4] |
|