在main()c ++中输入2D向量

时间:2016-09-05 04:46:46

标签: c++ vector stdin

我是矢量的新手,我试着在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;
}

运行时错误是我需要在程序开头输入垃圾输入。 这个含糊不清的输入一直困扰着我很长一段时间,而不是事先提出任何建议。!

2 个答案:

答案 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);