簡體   English   中英

從二維向量獲取輸入時出現分段錯誤

[英]Segmentation Fault while getting input from 2D vector

運行下面的代碼時出現分段錯誤。

int main()
{

    int R, C, val;
    cin>>R>>C;
    vector<vector<int>> a;
    for(int i = 0; i < R; i++)
    {
        for(int j = 0; j < C; j++)
        {
             cin>>val;
             a[i].push_back(val);
        }
    }

但是當我把它改成這個時,它似乎工作了。 是什么原因?

int main()
{

    int R, C, val;
    cin>>R>>C;
    vector<vector<int>> a;
    for(int i = 0; i < R; i++)
    {
        vector<int>temp;
        for(int j = 0; j < C; j++)
        {
             cin>>val;
             temp.push_back(val);
        }
        a.push_back(temp);
    }

無論RC的值是多少,我都會遇到同樣的錯誤。

你從來沒有告訴過vector<vector<int>>的大小,你嘗試訪問a[i]

您必須調整矢量的大小。

int main()
{

    int R, C;
    std::cin >> R >> C;
    std::vector<std::vector<int>> a(R, std::vector<int>(C));
    for(int i = 0; i < R; i++)
    {
        for(int j = 0; j < C; j++)
        {
             std::cin >> a[i][j]; //because we resize the vector, we can do this
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM