【发布时间】:2020-03-17 13:47:30
【问题描述】:
我正在尝试在散列时用 C++ 编写代码。为此,我试图将字符串推入向量向量中。但它显示了分段错误。
#include <bits/stdc++.h>
using namespace std;
int main() {
int n,ind,inr;
cin >> n;
int j=0;
vector<string> a;
vector<vector <string>> v(n);
for(int i=0;i<n;i++)
{
v.push_back(a);
}
for(int i=0;i<n;i++)
{
int m;
string name;
cin>>m;
cin>>name;
ind=m%2039;
v[ind][j]=name;
j=0;
cout<<name<<endl;
}
}
【问题讨论】:
-
问问自己,
v中嵌套向量的大小是多少(或者换一种说法:a的大小是多少)? -
j总是零??? -
不仅如此,您还会惊讶地发现
v的大小不是n值,而是两倍。就段错误而言,它们有很多不同的原因,在这里,很难决定从哪里开始。 -
v.at(ind).at(j)会很快暴露问题。