矩阵乘法与向量 - C ++

时间:2011-07-06 17:13:02

标签: c++ vector matrix

我正在制作一个可以增加用户定义大小矩阵的程序。我使用向量将值存储在矩阵中。

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 ++比较陌生,所以我不太确定如何对两个矩阵进行实际的乘法运算。如果有人可以提供帮助,那就太好了。

1 个答案:

答案 0 :(得分:2)

也许你误导了矢量容器的名称,这暗示了一些数学用途。向量模板不提供乘法矩阵甚至乘法向量的任何函数。在这种情况下,向量仅为您提供存储矩阵的容器。显然,你以一些线性化的方式存储矩阵,这将使乘法后来更加复杂。

请务必阅读http://www.cplusplus.com/reference/stl/vector/

此外,你真的不想迭代向量,因为如果是这种情况,你可能只是使用了一些其他容器。您希望随机访问手动乘以列和行。为此,您可以使用[] -operator]或at()成员函数。

然后只需要手动进行乘法,例如显示here(其中还包含一些伪代码)。