由于某种原因,在从文件输入值后,矩阵中每个数字的值都为零。当我使用全零初始化矩阵时它起作用,但无论出于何种原因,我都无法从文本文件中导入数字。
profile(passport)
...
struct Vector {
float* els;
int len;
};
struct Matrix {
Vector* col; // col is array of Vectors; each Vector is one column of matrix
int ncols; // total number of columns in matrix
};
...
ifstream fin("mat.def");
fin >> m >> n;
fin >> M;
答案 0 :(得分:0)
您尚未显示任何设置nm.ncols
值的代码。我的猜测是nm.cols
的值在使用之前未正确设置。
我建议稍微改变策略。而不是
fin >> m >> n;
fin >> M;
使用
fin >> M;
并确保在operator>>
函数中读取列数和行数。
std::istream& operator>>(std::istream& input, Matrix& mm)
{
int rows;
input >> mm.ncols;
input >> rows;
mm.col = new Vector[mm.ncols];
for (int i=0;i<mm.ncols;i++)
{
mm.col[i].len = rows;
mm.col[i].els = new float[rows];
for (int k=0;k<rows;k++) {
input >> mm.col[i].els[k];
}
}
return input;
}