A type alias (§ 2.5.1, p. 67) can make it easier to read, write, and understand pointers to multidimensional arrays. For example:
using int_array = int[4]; // new style type alias declaration; see § 2.5.1 (p. 68)
typedef int int_array[4]; // equivalent typedef declaration; § 2.5.1 (p. 67)
// print the value of each element in ia, with each inner array on its own line
for (int_array *p = ia; p != ia + 3; ++p) {
for (int *q = *p; q != *p + 4; ++q)
cout << *q << ' ';
cout << endl;
}
Here we start by defining int_array
as a name for the type “array of four int
s.” We use that type name to define our loop control variable in the outer for
loop.
Exercise 3.43: Write three different versions of a program to print the elements of ia
. One version should use a range for
to manage the iteration, the other two should use an ordinary for
loop in one case using subscripts and in the other using pointers. In all three programs write all the types directly. That is, do not use a type alias, auto
, or decltype
to simplify the code.
Exercise 3.44: Rewrite the programs from the previous exercises using a type alias for the type of the loop control variables.
Exercise 3.45: Rewrite the programs again, this time using auto
.