1. ホーム
  2. c++

[解決済み] 行列を作成するためのベクター

2022-03-04 11:48:12

質問

2次元の行列の次元を入力しようとしています。そして、この行列を埋めるためにユーザーの入力を使用します。私が試した方法は、ベクトル(ベクトルのベクトル)を介してこれを行うことです。しかし、データを読み込んで行列に追加しようとすると、いくつかのエラーが発生します。

//cin>>CC; cin>>RR; already done
vector<vector<int> > matrix;
for(int i = 0; i<RR; i++)
{
    for(int j = 0; j<CC; j++)
    {
    cout<<"Enter the number for Matrix 1";
         cin>>matrix[i][j];
    }
}

これを実行しようとすると、いつも「subscript out of range」というエラーが出ます。何かアドバイスはありますか?

どのように解決するのですか?

このままでは、ベクトルの次元が両方とも0になってしまいます。

その代わり、ベクトルをこのように初期化します。

vector<vector<int> > matrix(RR);
for ( int i = 0 ; i < RR ; i++ )
   matrix[i].resize(CC);

これにより、次元の行列が得られます RR * CC に設定され、すべての要素が 0 .