end = studentsInGroup.end(); it != end; ++it) {
const auto i = *it;
if (i.id == id) {
studentsInGroup.erase(it);
cout << "Студент " << i.name << "[" << i.id << "] успешно удален" << endl;
return;
}
else {
cout << "Студента с таким ID не существует" << endl;
cout << endl;
return;
}
}
}
помогите пожалуйста, проблема следующая. У меня есть файл с данными, там два студента с id 25 и 26. Когда я хочу удалить, я вызываю эту функцию, пишу в параметре 26, но выводится else блок, а id равен 25. То есть я сначала должен удалить студента 25, а только потом смогу удалить 26. Почему i.id конкретно в этом случае всегда равен 25? Итератор не сдвигается?
Почитай документацию на метод erase
А студент удаляется? У вас просто сообщение пишется на каждую итерацию
Обсуждают сегодня