2014-01-20 52 views
0

的矢量我有下面的代碼,在那裏我定義的結構如何填寫結構

#include <vector> 
#include <iostream> 

using namespace std; 

struct node 
{ 
    int index; 
    double value; 
}; 

int main() 
{ 

    vector < vector <node> >vett1; 

    node p; 
    p.index=5; 
    p.value=2; 

    for (int i=0; i<10; i++) 
     vett1[i].push_back(p); 

    return 0; 
} 

的矢量的矢量我不知道正確的方式來填補它。通過這種方式,當我運行它,編譯器給我分段錯誤的錯誤。

回答

0

當您訪問vett1[i],但vett1尚未填充大小零。這就是分段錯誤發生的原因。

三種方式來解決這個問題:

  1. for循環之前添加

    vett1.resize(10); 
    

  2. 或定義vett1並設置其大小,如下所示:

    vector <vector <node>> vett1(10); 
    
  3. 或者你也可以做到這一點,如果你不知道確切的預定尺寸的手:

    for (int i=0; i<10; i++) 
    { 
        vector<node> temp; 
        temp.push_back(p); 
        vett1.push_back(temp); 
    } 
    
+0

如果我不知道矢量的確切大小怎麼辦?並且我想以與push_back方法相同的方式填充它? – zzari

+0

@ user2988113查看最新的答案。方法#3。 – herohuyongtao