我想通过二维 vector 从用户那里获取二维矩阵的输入。但是当我像下面那样做时,程序崩溃了!!!但是为什么?
int m, n;
cin>>m>>n;
vector<vector<int> > v;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
int a;
cin>>a;
v[i].push_back(a);
}
}
根据我的代码,解决方案是什么。
最佳答案
在 v[i].push_back(a);
的位置在 for
中调用循环, vector v
为空并使用 v[i]
将导致未定义的行为。
您的代码应首先 push_back
一个vector<int>
:
for (int i=0; i<m; i++)
{
v.push_back(vector<int>());
for (int j=0; j<n; j++)
{
int a;
cin >> a;
v[i].push_back(a);
}
}
另一种方法是初始化 vector v
明确大小 m
:
int m, n;
cin>>m>>n;
vector<vector<int> > v(m);
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
int a;
cin>>a;
v[i].push_back(a);
}
}
关于c++ - C++中的初始化二维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36786374/