为什么我无法使用向量读取二维数组?

Why am I unable to read 2D array using vectors?

密码是:

#include<iostream>
#include<vector>
using namespace std;

int main()
{
    vector<vector<int>> arr;

    int i, j;

    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5; j++)
        {
            cin >> arr[i][j];
        }
    }

    return 0;

}

编译成功。但是,当我尝试 运行 Visual Studio (2013) 中的代码时,我得到了 运行 时间错误“向量下标超出范围”。

为什么我会收到这个 运行 时间错误?这是从用户读取二维数组输入的正确方法吗?

因为向量 arr 在您的代码中是空的。

#include<iostream>
#include<vector>
using namespace std;

int main()
{
    vector<vector<int>> arr;
    cout << arr.size() << endl;       // output: 0
    cout << arr.empty() << endl;      // output: 1 , it means arr is empty

    // First way
    vector<vector<int>> arr1(5, vector<int>(5));
    
    int i, j;

    // Second way
    arr.resize(5);
    for (i = 0; i < 5; i++) {
        for (j = 0; j < 5; j++) {
            int temp;
            cin >> temp;
            arr[i].emplace_back(temp);
        }
    }

    return 0;
}