向量乘法(矩阵乘法)奇数输出的向量

时间:2014-03-18 22:37:20

标签: c++ vector matrix

我试过没有错误,[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;
}

1 个答案:

答案 0 :(得分:0)

for(int i = 0; i < vec1.size(); i++)
{
  for(int k = 0; k < vec2[i].size(); k++)
  ...

vec2不一定有vec1的行数(如(3x2)*(2x3)情况)。您正在阅读vec2的结尾并获得未定义的行为。