我正在制作一个可以增加用户定义大小矩阵的程序。我使用向量将值存储在矩阵中。
void Multiply(vector<float> A,vector<float> B,int rA, int cA,int rB,int cB)
{
system(CLEARSCREEN);
vector<float> C; // The resulting matrix
int sizeA=rA*cA;
int sizeB=rB*cB;
int sizeC=rA*cB;
int lrA=sizeA-1;
int lrB=sizeB-1;
int writeHead=0;
A.resize(sizeA);
B.resize(sizeB);
C.resize(sizeC);
demoDisplay(rA,rB,cA,cB,lrA,lrB,sizeA,sizeB);
for(;writeHead<=lrA; writeHead++)
{
cout << "Please enter a value for \"" << alphabet[writeHead] << "\" in MATRIX A.\n";
cin >> A[writeHead];
}
cout << "\n";
writeHead=0;
for (;writeHead<=lrB; writeHead++)
{
cout << "Please enter a value for \"" << alphabet[writeHead] << "\" in MATRIX B.\n";
cin >> B[writeHead];
}
cout << "\n\n";
displayMatrices(A,B,rA,rB,cA,cB,lrA,lrB,sizeA,sizeB);
for (int colRead=0; colRead<=cA; colRead++) {
// somehow iterate through each element of the vector?
}
}
我对C ++比较陌生,所以我不太确定如何对两个矩阵进行实际的乘法运算。如果有人可以提供帮助,那就太好了。
答案 0 :(得分:2)
也许你误导了矢量容器的名称,这暗示了一些数学用途。向量模板不提供乘法矩阵甚至乘法向量的任何函数。在这种情况下,向量仅为您提供存储矩阵的容器。显然,你以一些线性化的方式存储矩阵,这将使乘法后来更加复杂。
请务必阅读http://www.cplusplus.com/reference/stl/vector/
此外,你真的不想迭代向量,因为如果是这种情况,你可能只是使用了一些其他容器。您希望随机访问手动乘以列和行。为此,您可以使用[] -operator]或at()成员函数。
然后只需要手动进行乘法,例如显示here(其中还包含一些伪代码)。