Вне диапазона при создании матрицы, размеры которой равны размерам двух других матриц - PullRequest
0 голосов
/ 07 апреля 2019

Предположим, у меня есть две матрицы с именами 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, но вместо этого произойдет сбой.

1 Ответ

0 голосов
/ 07 апреля 2019
    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

Здесь вы получаете доступ к первым элементам двух пустых векторов, поэтому, естественно, происходит сбой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...