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
А студент удаляется? У вас просто сообщение пишется на каждую итерацию
Обсуждают сегодня