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

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

本文关键字:向量 C++ 分段 错误 创建      更新时间:2024-09-22

我想在C++中创建一个向量的向量,维度为nx2,其中n(行(由用户给定。我试图使用for循环在这个向量中插入值,但一旦给出n(行(的值,就会出现Segmentation错误该怎么办?

#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);
}
}