codecamp

C++ apmatrix类

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;
} 
C++ 集合数据结构Set
C++ 距离矩阵
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }