尝试创建向量的向量时出现 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);
}
}
我想在 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);
}
}