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

input 2D vector in main() c++

本文关键字:输入 2D 向量 C++ main      更新时间:2023-10-16

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

运行时错误是我需要在程序开头输入垃圾输入。这种模棱两可的输入已经困扰了我很长时间,提前感谢您对此的任何建议。!

这一行:

jail[i].reserve(n);

只是告诉vector预先分配内存(这只是在push_back操作上进一步优化 realloc 的提示,但不保证分配(。您必须改用resize,这确实分配了内存。

在你的代码中:

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