C++ apmatrix类

2023-03-20 16:51 更新

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;
} 
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号