为什么我的代码会导致高返回值?C++

Why is my code causing a high return value? C++

本文关键字:返回值 C++ 我的 代码 为什么      更新时间:2023-10-16

所以我做了一个函数来做矩阵乘法,这个函数似乎做了我想做的事。

然而,这个程序似乎很慢,当使用函数时,我得到了一个很高的返回值(3221225477(。

是什么导致这个函数运行如此缓慢?我能做些什么让它更快吗?

friend Matrix operator *(const Matrix &src, const Matrix &src2)  {  
Matrix TEMP(src.matrixarr.size(),src2.matrixarr[1].size(),0);
for (int i = 0; i < TEMP.matrixarr.size();i++){
for (int j= 0; j < TEMP.matrixarr[1].size();i++){
for( int k = 0; k < src.matrixarr[1].size();i++){
TEMP.matrixarr[i][j] = src.matrixarr[i][k] + src2.matrixarr[k][j];
};
};
}; 
return TEMP;
};

您的代码中有3个i++,这似乎是不对的。

应该是

friend Matrix operator *(const Matrix &src, const Matrix &src2)  {  
Matrix TEMP(src.matrixarr.size(),src2.matrixarr[1].size(),0);
for (int i = 0; i < TEMP.matrixarr.size();i++){
for (int j= 0; j < TEMP.matrixarr[1].size();j++){
for( int k = 0; k < src.matrixarr[1].size();k++){
TEMP.matrixarr[i][j] = src.matrixarr[i][k] + src2.matrixarr[k][j];
};
};
}; 
return TEMP;
};

对于值3221225477,即十六进制中的0xC0000005,可能是因为值i太大,程序无法访问相应的内存。

我知道你的程序出了什么问题,但重要的是你要学会如何调试你的程序。在这种情况下,我会尝试打印出值,而不仅仅是使用调试器。

friend Matrix operator *(const Matrix &src, const Matrix &src2)  {  
Matrix TEMP(src.matrixarr.size(),src2.matrixarr[1].size(),0);
for (int i = 0; i < TEMP.matrixarr.size();i++){
for (int j= 0; j < TEMP.matrixarr[1].size();i++){
for( int k = 0; k < src.matrixarr[1].size();i++){
std::cout << "i:" << i << "j:" << j << "k:" << k << "src.matrixarr[i][k]:" << src.matrixarr[i][k] << "src2.matrixarr[k][j]:" << src2.matrixarr[k][j] << "n";
TEMP.matrixarr[i][j] = src.matrixarr[i][k] + src2.matrixarr[k][j];
};
};
}; 
return TEMP;
};

如果你这样做,你应该送别一些东西。

另外,另一个答案可能也有问题。如果你按照我的方式这样做,你会发现什么。