2012-12-27 51 views
1

的指定位置,以便所有我嘗試做的是插入一個字符串到我的矢量插入字符串轉換成2D矢量

class World 
{ 
    public: 
     void writeCell(int writelocW, int writelocH, std::string input); 
    private: 
     std::vector<std::string> wH; 
    std::vector< std::vector<std::string> > grid; 
}; 

void World::writeCell(int writelocW, int writelocH, std::string input) 
{ 
    wH.insert(wH.begin()+writelocH,1,input); 
    grid.insert(grid.begin()+writelocW,1,wH); 
} 

writeCell參數從另一頭被讀取。

但文件給我一個錯誤"vector iterator + offset out of range"當我與writelocWwritelocH運行 都設置爲1,並輸入到"Desc"。該錯誤似乎由wH.insert"+writelocH"部分調用。我該如何解決這個問題?

回答

1

在插入隨機位置之前檢查矢量大小。如果矢量大小比writelocH小你「超出範圍的」例外:

更換

wH.insert(wH.begin()+writelocH,1,input); 
grid.insert(grid.begin()+writelocW,1,wH); 

有:

if (wH.size() > writelocH) 
{ 
    wH.insert(wH.begin() + writelocH,1,input); 
    grid.insert(grid.begin()+writelocW,1,wH); 
} 
else 
{ 
    wH.insert(wH.begin(),1,input);  
    grid.insert(grid.begin(),1,wH); 
} 
+0

我AARGH一直很盲目,我想這可能是一個「writelocH」的問題是一個整數,但是....非常感謝你! – Baribal