Странность вашего кода заключается в том, что вы вводите sizeOfAnotherArray
несколько раз и, следовательно, несколько раз меняете размер всего массива. Но учтите, что вы меняете только количество строк. Каждая добавляемая строка будет иметь последний размер, но более ранние строки сохранят исходный размер.
Это означает, что если одно из более поздних значений для sizeOfAnotherArray
больше, чем одно из более ранних значений, то вы вы получите ошибку вне допустимого диапазона, потому что предыдущая строка все равно будет иметь меньший размер. Он создает рваный массив , который представляет собой массив, в котором количество столбцов зависит от того, в какой строке вы находитесь.
cout << "Enter number of rows: ";
cin >> numOfRows;
vector<vector<int>> vec(numRows); // create array with N rows
for (int i = 0; i < numOfRows; i++) {
cout << "Enter size of another array: ";
cin >> sizeOfAnotherArray;
vec.at(i).resize(sizeOfAnotherArray); // resize this row only
for (int j = 0; j < sizeOfAnotherArray; j++) {
...
}
for (int i = 0; i < vec.size(); i++) {
for (int j = 0; j < vec.at(i).size(); j++) { // loop on the size of this row
cout << vec.at(i).at(j) << " ";
}
cout << "\n";
}