将字符串插入2D矢量的指定位置

时间:2012-12-27 10:00:17

标签: c++ vector

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

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"。错误似乎由"+writelocH"的{​​{1}}部分调用。我该如何解决这个问题?

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);
 }