1

所以我想做的就是在我的向量中插入一个字符串

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"wH.insert. 我该如何解决?

4

1 回答 1

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);
 }
于 2012-12-27T10:05:29.133 回答