尝试在 c++ 中将两个动态创建的矩阵(2d 向量)相乘
Trying to multiply two dynamically created matrices(2d vector's) together in c++
所以我要做的是将一个二维向量乘以另一个二维向量。
我来自Java,Python和C#,所以我在学习的过程中几乎在学习C++。
我有代码来生成向量并显示向量,但我似乎无法完成乘法部分。
v1 是另一个已生成的矩阵。
vector<vector<int> > v2 = getVector();
int n1 = v1[0].size();
int n2 = v2.size();
vector<int> a1(n2, 0);
vector<vector<int> > ans(n1, a1);
for (int i = 0; i < n1; i++) {
for (int j = 0; j < n2; j++) {
for (int k = 0; k < 10; k++) {
// same as z[i][j] = z[i][j] + x[i][k] * y[k][j];
ans[i][j] += v1[i][k] * v2[k][j];
}
}
}
displayVector(ans);
我对自己哪里出错的猜测是在最内层的循环中。我不知道该用什么来代替我现在拥有的那 10 个。
乘以矩阵时,左侧矩阵的列数必须等于右侧矩阵的行数。您需要检查这是否为真,并将该公共数字用于k
变量的大小:
int nCommon = v1.size();
assert(v2[0].size() == nCommon);
for (int i = 0; i < n1; i++) {
for (int j = 0; j < n2; j++) {
for (int k = 0; k < nCommon ; k++) {
ans[i][j] += v1[i][k] * v2[k][j];
}
}
}
对于你的内部循环,你应该做这样的事情
ans[i][j] = 0;
for (int k = 0; k < n2; k++) {
ans[i][j] += v1[i][k] * v2[k][j];
}
我不知道10
从何而来。
相关文章:
- 读取字符串文本输入以创建 2D 矢量
- 如何使用 DXGI 格式DXGI_FORMAT_R1_UNORM创建 2D 纹理?
- 从 2 个 1D 矢量创建 2D 矢量
- 不明白使用双指针 (**) 创建 2d 动态数组
- 创建 2D 数组0xCCCCCCCC访问冲突写入位置
- 如何在C++中创建 2d 数组,其中一部分包含循环计数器,另一部分包含数字列表?
- C++ 如何创建 2D 数组,将其传递给另一个函数,然后打印
- 创建 2D 数组类:如何访问 2D 数组类(如 array[x][y))中的元素
- C++ - 创建 2D 复制构造函数
- 如何在其中创建2D字符串向量并插入数据
- 使用来自C 参数的大小创建2D数组
- C++的新增功能:创建 2D 数组并具有正确的赋值运算符:分割错误
- 如何使用矢量创建 2D 数组
- 动态创建 2D 数组时使用的大小
- 从文本文件创建 2D 字符串矢量
- 从 1D 数组创建 2D 数组
- C++以内存安全的方式使用给定向量的大小创建2D阵列
- C++ 如何动态创建 2D 矢量
- 创建2D数组时出现异常:在C++中重新抛出之前进行清理
- 基于命令行输入创建 2D 数组