一、数组 与 矩阵
两者的关系显而易见。
- 一个矩阵可以被视为多维数组的一个特例,而数组可以视为一维或多维的矩阵。
- 具体来说,数组是一个线性数据结构,用于存储相同类型的元素,而矩阵是数组的二维表示形式。
1.1 考虑数组的索引
创建k维数组:
int score[u1][u2][u3]...[uk]
k维数据的索引/下标:
[ i 1 ] [ i 2 ] [ i 3 ] . . . [ i k ] [i_1][i_2][i_3]...[i_k] [i1][i2][i3]...[ik]
数组元素个数: n = u 1 u 2 u 3 . . . u k n = u_1u_2u_3...u_k n=u1u2u3...uk
内存空间: n ∗ s i z e o f ( i n t ) n * sizeof(int) n∗sizeof(int)
C++编译器为数组预留空间: s t a r t —— s t a r t + s i z e o f ( s c o r e ) − 1 start——start+sizeof(score)-1 start——start+sizeof(score)−1
1.2 索引的映射——行/列主映射
在实现数组的set、get方法时,需要根据索引确定其在 [ s t a r t , s t a r t + s i z e o f ( s o c r e ) − 1 ] [start, start+sizeof(socre)-1] [start,start+sizeof(socre)−1]中的对应位置,即需要实现一个映射函数:
[ i 1 ] [ i 2 ] [ i 3 ] . . . [ i k ] → s t a r t + m a p ( i 1 , i