问题来源: PAT1090 全部段错误
vector<int> v;
//vector<int> v(cnt);
int t;
for (int j = 0; j < cnt; j++) {
//cin >> v[j];
cin >> t;
v.push_back(t);
//引出新的问题: v.push_back(t);与cin>>v[j]的区别
//https://blog.youkuaiyun.com/jcjunior/article/details/108438259
//1. 当声明方式为vector<int> v 时,使用cin>>v[j]会引发段错误,因为vector容器未声明初始大小,同string未初始化强行使用数组下标访问引发报错
//2. 故1.的声明只能使用push_back按顺序插入
//3. 如果希望vector按下标访问,使用声明方式: vector<int> v(cnt);
//4. 注意,3.的声明方式将导致vector全部为0,此时再使用push_back函数,无法赋值成功,
//因为初始化已经顺位赋值到n了,vector在第n位没有空间
}
本错误同 out of subscript string
即字符串未初始化,强行使用数组下标访问形式
(9条消息) vector<int> v 与 vector<int> v(n) 的区别_JCjunior的博客-优快云博客