尝试创建向量的向量时出现 C++ 分段错误

C++ Segmentation fault while trying to create a vector of vectors

我想在 C++ 中创建一个维度为 nx2 的向量向量,其中 n(rows) 由用户给出。我正在尝试使用 for 循环在此向量中插入值,但一旦给出 n(rows) 的值,它就会出现分段错误 怎么办?

#include <iostream>
#include <vector>
#include <cstdlib>
#define col 2
using namespace std;

int main()
{
    int row;
    cin >> row;
    vector<vector<int>> vec;

    for (int i = 0; i < row; ++i)
    {
        for (int j = 0; j < col; ++j)

            cin >> vec[i][j];
    }
    return 0;
}

您需要 resize 向量才能插入元素。或者使用push_back增量插入。

    vector<vector<int>> vec;
    vec.resize(row);
    
    for (int i = 0; i < row; ++i)
    {
        vec[i].resize(col);

        for (int j = 0; j < col; ++j)
        {
            cin >> vec[i][j];
        }
    }

或:

    vector<vector<int>> vec;
    vec.resize(row);
    
    for (int i = 0; i < row; ++i)
    {

        for (int j = 0; j < col; ++j)
        {
            int value;
            cin >> value;
            vec[i].push_back(value);
        }
    }