将矩阵列保存在C 中

Save matrix column-wise in c++

本文关键字:存在 保存 阵列      更新时间:2023-10-16

我正在尝试理解此代码,但我不能:n x n矩阵是明智的。我区分完整的(F),上(U)和下部(L)矩阵。n是矩阵的尺寸

int sum(int k){
int s = 0;
for (int i = 1; i<=k; i++)
    s += i;
return s;}

double getentry(int j, int k){
    j--;k--;
    assert(typ == 'F' || typ == 'U' || typ == 'L');
    assert(k<n && j<n);
    if(typ == 'F') return mat[k*n+j];
    if(typ == 'L') return (k>j)?(0.0):(mat[k*n+j-sum(k)]);  
    if(typ == 'U') return (j>k)?(0.0):( mat[k*n+j-sum(n-1)+sum(n-(k+1))]);
}

我特别不理解这一行:

if(typ == 'L') return (k>j)?(0.0):(mat[k*n+j-sum(k)]);  
    if(typ == 'U') return (j>k)?(0.0):( mat[k*n+j-sum(n-1)+sum(n-(k+1))]);

,但是如果您也可以解释这一行,我将不胜感激:

if(typ == 'F') return mat[k*n+j];

lines

   if(typ == 'L') return (k>j)?(0.0):(mat[k*n+j-sum(k)]);  
        if(typ == 'U') return (j>k)?(0.0):( mat[k*n+j-sum(n-1)+sum(n-(k+1))]);

签署使用包装存储方案存储矩阵的使用。

还要注意,恕我直言,总体代码质量很低,例如,无需使用a for-for-loop 计算sum(k),其显式表达式为(k 1)*k/2等。

相关文章: