棘手的问题,如何乘以2个ND矩阵?当然columnsA == rowsB ... 这就是我所拥有的:
void multiply(int *A, int *B, int r1, int c1, int r2, int c2) {
int sum = 0;
for (int i=0;i<(c1*r2);i++) {
for (int j=0;j<c1;j++) {
sum += A[(i-i%c1)+j] * B[(i%c1)+j*c1];
}
cout << sum << " ";
sum = 0;
}
}
致电:
multiply(&A[0][0],&B[0][0],rowsA,columnsA,rowsB,columnsB);
显然只适用于矩形矩阵。有什么建议吗? :)
答案 0 :(得分:0)
答案 1 :(得分:0)
另一个建议,为了使其防错,请使用以下技术:
编写模板包装器,例如,
template<typename TYPE, size_t ROW_A, size_t COL_A, size_t COL_B>
void multiply (TYPE (&A)[ROW_A][COL_A], TYPE (&B)[COL_A][COL_B])
{
mulitply(&A[0][0], &B[0],[0], ROW_A, COL_A, COL_B, COL_B);
}
有两个优点: