所以我试图做的就是在我的向量中插入一个字符串
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"
将writelocW
和writelocH
设置为1并输入"Desc"
。错误似乎由"+writelocH"
的{{1}}部分调用。我该如何解决这个问题?
答案 0 :(得分: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);
}