vector<int> iV2_func{2, 3, 4, 5};
drucke(iV2_func);
for (j=0; j<=iV2_func.size(); j++) {
iV2_func[j] = quadfunc(iV2_func[j]+1);
}
drucke(iV2_func);
В настоящее время я тренируюсь для своего предстоящего экзамена C++, и с тех пор, как я вырос с Java, я не знаком со всеми обычаями C++. Данный код находится в main()
-Метах, все необходимое было включено и т. Д. Задача заключалась в обнаружении ошибок в шести циклах, которые использовали различные средства для умножения параметра с самим собой, например макроса, шаблона, встроенная функция и т. д. drucke()
печатает одиночные элементы вектора. Этот цикл for здесь явно за пределами границ, но поскольку метод .at()
-Method не используется, исключение не генерируется, и вместо этого мы получаем неопределенное поведение.Векторный оператор [] вне диапазона приводит к сбою?
Когда я запускаю программу, программа вылетает после все линии были напечатаны. Даже для петель после этот контур прямо здесь проходит, и все печатается. Похоже, что ошибка возникает в конце метода main(), а не когда программа обращается к индексу, который выходит за пределы диапазона, но ошибка определенно лежит в этом индексе, потому что программа не сбой в противном случае. Итак, как именно, что программа, похоже, работает с этим кодом, но все же падает в конце?
имеет неопределенное поведение, а это означает, что буквально * что-либо может случиться. –
_Vector 'operator []' вне диапазона приводит к сбою_ Я знал, что это будет хорошо! – Tas
Код с ошибками в нем не будет вести себя так, как вы ожидаете. Вот почему мы исправляем ошибки. –