2014-07-08 63 views
1

我正在嘗試創建列表向量並向列表中添加元素。以下是我嘗試的方式。但是,我在 'v [i] .push_back(a)'處遇到Segmentation fault錯誤。我在哪裏實施它錯了?我如何克服它?創建列表向量時出錯

#include<iostream> 
#include<list> 
#include<vector> 
using namespace std; 

int main() 
{ 
    vector<list<int> > v; 
    vector<list<int> >::iterator it; 
    list<int>::iterator itt; 
    int nv; //size of the vector 
    cin>>nv; 
    for(int i=0;i<nv;i++) 
    { 
     int a; 
     cin>>a; 
     while(a!=-1) 
     { 
      v[i].push_back(a); 
      cin>>a; 
     } 

    } 

    for(it=v.begin();it!=v.end();it++) 
    { 
     for(itt=(*it).begin();itt!=(*it).end();itt++) 
     { 
      cout<<*itt<<endl; 
     } 
    } 

    return 0; 
} 

PS:請原諒我對這個問題的評論。

+2

在什麼樣的機器正在運行的'linux'命令? – Mathias

+2

試圖在Windows上運行Google App Engine確實會產生反效果,您將繼續遇到類似問題。購買Linux或Mac開發機器。如果您無法負擔在現有Windows計算機上設置基於VM的解決方案。在VM中運行Linux和GAE。對不起,我知道這不是你想聽到的,而是來自Windows和UNIX環境的專家。 – gae123

+0

你不會添加任何東西到'v'(即'v'是*空*),所以當然'v [i]'其中'i'是任何東西都不會工作(並且可能會崩潰)。 – crashmstr

回答

2

您向量是空的,因爲它是默認的構造:

int main() 
{ 
    vector<list<int> > v; 
    vector<list<int> >::iterator it; 
    list<int>::iterator itt; 
    int nv; //size of the vector 
    cin>>nv; 
    // Fix the size of the vector 
    v.resize(nv); 
    for(int i=0;i<nv;i++) 
    { 
     int a; 
     cin>>a; 
     while(a!=-1) 
     { 
      v[i].push_back(a); 
      cin>>a; 
     } 

    } 

    for(it=v.begin();it!=v.end();it++) 
    { 
     for(itt=(*it).begin();itt!=(*it).end();itt++) 
     { 
      cout<<*itt<<endl; 
     } 
    } 

    return 0; 
}