我试过没有错误,[2x2] * [2x2]和[2x3] * [3x2]。 “奇数 * 一个 *”是[3x2] * [2x3]的输出。它的输出看起来像这样:第1行:[9 10 11],第2行:[39 44 49],第3行:[69 78 87 0 0 0297 0]。第3行的输出是添加元素,与以前的2x2和(2x3 * 3x2)试验不同。
以下是我的代码片段,我相信问题可能存在。
int sum;
outputVec.resize(vec1.size());
for(int i = 0; i < vec1.size(); i++)
{
for(int k = 0; k < vec2[i].size(); k++)
{
sum = 0;
for(int j = 0; j < vec1[i].size(); j++)
{
sum += (vec1[i][j] * vec2[j][k]);
}
outputVec[i].push_back(sum);
}
}
for(int i = 0; i < outputVec.size(); i++){
for(int j = 0; j < outputVec[i].size(); j++){
printf("%3d",outputVec[i][j]);
}
cout << endl;
}
答案 0 :(得分:0)
for(int i = 0; i < vec1.size(); i++)
{
for(int k = 0; k < vec2[i].size(); k++)
...
vec2
不一定有vec1
的行数(如(3x2)*(2x3)情况)。您正在阅读vec2
的结尾并获得未定义的行为。