让我们假设有两个矩阵A和B,我想创建一个新的矩阵C,其中C的行数等于矩阵A和B的行数的乘积。C的列数也等于A和B的列数的乘积。
当矩阵A或B中的任何一个为空矩阵时,我的程序均不起作用。
我尝试将矩阵A和B的大小设置为不为零的值,该程序起作用了。
// this function "creates" and returns a matrix of the size mentioned in parameters
vector<vector<int>> CreateMatrix (int number_of_rows, int number_of_columns) {
return vector<vector<int>>(number_of_rows, vector<int> (number_of_columns));
}
int main()
{
vector<vector<int>> a;
vector<vector<int>> b;
int no_rows = a.size() * b.size(); // multiplies no. of rows A and B
int no_cols = a.at(0).size() * b.at(0).size(); // multiplies number of columns of A and B
auto c = CreateMatrix(no_rows, no_cols).
cout << c.size();
我希望程序打印“ 0”,因为那将是矩阵C的行数,而不是崩溃。
答案 0 :(得分:0)
vector<vector<int>> a;
vector<vector<int>> b;
int no_cols = a.at(0).size() * b.at(0).size(); // multiplies number of columns of A and B
在这里您访问两个空向量的第一个元素,因此自然会崩溃。