多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
apmatrix是二维的,除此之外它与apvector很像。不同于向量的长度,apmatrix有两个维度,称为numrows和numcols,分别表示“行数”和“列数”。 矩阵中的每个元素用两个索引来识别,其中一个是行编号,另一个是列编号。 要创建一个矩阵,有四种可选的构造函数: ~~~ apmatrix<char> m1; apmatrix<int> m2 (3, 4); apmatrix<double> m3 (rows, cols, 0.0); apmatrix<double> m4 (m3); ~~~ 第一个构造函数什么都没做,它创建的矩阵行数和列数都是0。第二个有两个整型数类型的参数,依次是行数和列数的初始值。第三个构造函数添加了一个参数用于初始化矩阵的元素,其余与第二个相同。第四个是复制构造函数,它以另一个apmatrix对象为参数。 就像apvectors一样,我们可以创建任何类型的apmatrix对象 (包括apvector,甚至apmatrix等类型)。 要访问矩阵的元素,我们使用[]操作符来指定行和列的信息: ~~~ m2[0][0] = 1; m3[1][2] = 10.0 * m2[0][0]; ~~~ 如果我们想尝试访问范围之外的元素,程序会打印错误信息并退出。 numrows和numcols两个函数分别获取矩阵的行数和列数。记住,行索引是0到numrows() -1之间的数,而列索引是0和numcols() -1之间的数。 常用嵌套循环来遍历矩阵。下面循环将矩阵中每个元素的值设置为其行索引和列索引的和: ~~~ for (int row=0; row < m2.numrows(); row++) { for (int col=0; col < m2.numcols(); col++) { m2[row][col] = row + col; } } ~~~ 循环打印时,矩阵每一行的元素使用制表符分隔,列之间以换行符分隔: ~~~ for (int row=0; row < m2.numrows(); row++) { for (int col=0; col < m2.numcols(); col++) { cout << m2[row][col] << "\t"; } cout << endl; } ~~~