超出范围的向量下标C ++

时间:2014-11-18 16:55:31

标签: c++ debugging vector subscript outofrangeexception

我在我的一个cpp文件中有这个方法,我已经导航了我的失败。我还添加了cout语句并检查foo和mainWord中是否有内容。我认为我的问题与我如何向foo添加元素或者我是如何重新添加它们有关。大小mainWord是88,foo的大小超过1000.这是我向foo添加元素的地方:

while (myfile>>magic)//store the colours in an array
{
     foo.push_back(magic);
}

这是我尝试更改它们并将它们重新添加的地方。

void Penguin::addWord(std::vector<int> foo)
 {
 unsigned fooCounter=0;
 int temp;
for (int i=0;i<88;i+2)
 {
     if(foo.at(fooCounter) == 11111111 && foo.at(fooCounter) != NULL)
     {
         if(mainWord[i]==1 && mainWord[i+1]==1)
         {
             foo.at(fooCounter) = 11111111;
         }
         else if(mainWord[i]== 1 && mainWord[i+1] == 0)
         {
                 foo.at(fooCounter) = 11111110;
         }
         else if(mainWord[i]== 0 && mainWord[i+1] == 1)
         {
             foo.at(fooCounter) = 11111101;
         }
         else
        {
                 foo.at(fooCounter) = 11111100;
        }
     }
     else if (foo.at(fooCounter) == 11111111 && foo.at(fooCounter) != NULL)
     {
         if(mainWord[i]== 1 && mainWord[i+1] == 1)
         {
             foo.at(fooCounter) = 00000011;
         }
         else if(mainWord[i]== 1 && mainWord[i+1] == 0)
         {
             foo.at(fooCounter) = 00000010;
         }
         else if(mainWord[i]== 0 && mainWord[i+1] == 1)
         {
             foo.at(fooCounter) = 00000001;
         }
         else
        {
            foo.at(fooCounter) = 00000000;
         }
     }
     fooCounter++;
 }

}

我不断收到错误消息:“调试断言失败。矢量下标超出范围” ......请帮忙

1 个答案:

答案 0 :(得分:4)

您有一个无限循环,因为i循环中永远不会更新for。你需要修正错字:

for (int i=0;i<88;i+=2)
                    ^
                    ^