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別のヘッダーから読み取られるパラメーターを使用します。

しかし、ファイルを1に設定し、両方を1に設定して"vector iterator + offset out of range"実行すると、ファイルにエラーが発生します。エラーはの一部によって呼び出されているようです。どうすれば修正できますか?writelocWwritelocH"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 に答える