2014-02-17 42 views
0

請運行此程序時,我可以知道如何解決問題。 這是我的代碼如何將對象插入到具有C++向量的向量中

for (int i = 0; i < size; i++) 
    { 
    std::vector< vector<Point> > tableau2; 
    std::vector<Point> Vpoint; 
    .... 
    ..... 
     Point rt(s->c.x, s->c.y, s->c.z); 
     std::vector<Point> pp; 
     pp=triangulateSphere(rt, s->r); 
     for (int indice=0;indice<pp.size();indice++) 
     { 
      Point p1=pp[indice]; 
      Vpoint.push_back(p1); 
      tableau2[i].push_back(p1);// This the cause of poblem 
     } 
    ..... 
    .... 
     } 

我沒有得到任何錯誤,但我得到一個問題,當我嘗試運行它,這是因爲指令tableau2[i].push_back(p1);

謝謝您的幫助

+2

'tableau2'是空的和正在訪問它內部循環中的界限。 – juanchopanza

+0

'tableau2 [i]'沒有被定義,你的外部向量的大小爲0.嘗試聲明它的大小:'... Point >> tableau2(size);' – Cristy

+0

非常感謝你 – user3320319

回答

0

Tableau2是空的,所以你試圖訪問它的值會使程序崩潰。

此外,它最好是使用

vector.at(index) 

代替在C數組直接訪問值一樣,由於在()方法,作爲保護

+0

[]方法也檢查邊界...一般通過調用其他方法來實現。 –

+0

我真的不明白你想說什麼 – user3320319