超出范围矢量下标C++

Out of range vector subscript C++

本文关键字:下标 C++ 范围      更新时间:2023-10-16

我在我的一个 cpp 文件中有这个方法,我已经导航了我的失败。我还添加了cout语句,并检查了foo和mainWord中是否有内容。我认为我的问题与我如何将元素添加到 foo 或我如何尝试重新添加它们有关。主字的大小是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++;
 }
}

我不断收到一个错误,说:"调试断言失败。矢量下标超出范围"...请帮忙

你有一个无限循环,因为i永远不会在for循环中更新。您需要修复拼写错误:

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