我是矢量的新手,我试着在main()函数中输入这个2D矢量,但是无法这样做。
int main()
{
int t, x, n;
cin>>n;
vector< vector <int> > jail(n);
for(int i=0; i<n; i++){
jail[i].reserve(n);
for(int j=0; j<n; j++){
cin>>jail[i][j];
}
}
cout<< jailBreak(jail,n-1,0,0)<<endl;
}
运行时错误是我需要在程序开头输入垃圾输入。 这个含糊不清的输入一直困扰着我很长一段时间,而不是事先提出任何建议。!
答案 0 :(得分:5)
这一行:
jail[i].reserve(n);
告诉vector
预先分配内存(这只是在push_back
操作上优化进一步重新分配的提示,但不保证分配)。你必须使用resize
而不是真正分配内存。
答案 1 :(得分:1)
在您的代码中:
for(int i=0; i<n; i++){
jail[i].reserve(n);
for(int j=0; j<n; j++){
cin>>jail[i][j];
}
}
jail[i].reserve(n);
应为jail[i].resize(n)
cin>>jail[i][j]
之前从未见过这项工作。 cin
进入临时状态然后再推送。
int temp;
std::cin >> temp;
jail[i].emplace_back(temp);