我想通過2D矢量從用戶獲取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);
}
}
根據我的代碼將是什麼解決方案。
它的工作原理。你可以請給我詳細的答案,爲什麼我必須push_back矢量? –
@NafeeurRahman因爲你沒有將任何東西push_v到'v',它只是空的。 'v'是一個2-d向量。 – songyuanyao
@NafeeurRahman如果向量'v'爲空,則任何'i'訪問'v [i]'都會嘗試訪問分配存儲空間(如果有的話)'v'的元素,這是未定義的行爲。對於類比,這與你有'int v [10];'並且你嘗試訪問'v [99]'的情況類似。 – jotik