2次元ベクトルで2D行列を入力したいと思っています。しかし、私が下のようにしている間、プログラムはクラッシュした!!!しかし、なぜ?C++での2Dベクトルの初期化
int m, n;
cin>>m>>n;
vector<vector<int> > v;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
int a;
cin>>a;
v[i].push_back(a);
}
}
私のコードに従った解決策は何でしょうか。
v[i].push_back(a);
それは動作します。私はなぜ私がpush_backベクトルを持っている必要があるのか詳細を教えてください。 ?? –
@NafeeurRahmanあなたは 'v'に何かpush_backをしなかったので、それはただ空です。 'v'は2-dベクトルです。 – songyuanyao
@NafeeurRahmanベクトル 'v'が空の場合、任意の' i'に対して 'v [i]'にアクセスすると、未定義の振る舞いである 'v'の要素に対して(もしあれば)割り当てられた記憶域外のメモリにアクセスしようとします。同様に、これは 'int v [10];'があり、 'v [99]'にアクセスしようとした場合と似ています。 – jotik