超出范围矢量下标C++
Out of range vector subscript C++
我在我的一个 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)
^
^
相关文章:
- 尝试通过多个向量访问变量时,向量下标超出范围
- 矢量下标超出SFML游戏中的范围
- 如何在C++程序中使用下标数字?
- 一组值的零开销下标运算符
- 运行时错误:矢量下标超出范围:正在检查空集
- 如何重载下标运算符 [] 以引用 2d STL 数组?
- 如果变量数据包含大于 vector 所有元素的整数,则仅在视觉工作室上接收"矢量下标超出范围"?
- 矢量无效下标.SFML
- C++ IDE 不会推断/自动完成对模板类中的 std::array 下标表达式的成员访问
- 编译期间矢量下标超出范围
- C++ 调试断言失败 - 矢量下标超出视觉工作室的范围
- 有什么理由不扩展 std::set 以添加下标运算符吗?
- 在继承的模板类中使用下标 [] 运算符
- 对矢量来说是全新的.矢量下标超出范围
- 运算符重载多个任务的下标和赋值运算符
- 为什么函数的任何索引处的下标运算符在C++中总是返回1
- c++下标运算符到下级类向量
- C++十进制到十六进制(字符串下标超出范围)
- 创建结构体向量,表达式:向量下标超出范围
- 数组下标运算符 ([ ]) 对数组有什么作用?