У меня есть этот метод в одном из моих файлов 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++;
}
}
Я продолжаю получать сообщение об ошибке: «Ошибка утверждения отладки. Индекс вектора вне допустимого диапазона»... Пожалуйста, помогите
for (int i=0;i<88;i+2)
Как вы проверяете, что ваш вектор содержит не менее 44 элементов? - person πάντα ῥεῖ   schedule 18.11.2014fooCounter
- это скомпрометированный индекс. - person πάντα ῥεῖ   schedule 18.11.2014foo
по значению. Таким образом, вся та работа, которую вы выполняете внутри функции для измененияfoo
, идет насмарку, как только функция возвращается. Передайтеfoo
по ссылке, а не по значению. - person PaulMcKenzie   schedule 18.11.2014