Почему-то не все мои значения вставляются в список

Я делаю домашнее задание, где я должен использовать класс непрерывных списков наших профессоров для хранения списка личных записей, которые затем могут быть распечатаны или найдены для конкретной записи. Структура личных записей содержит только данные о членах для имени first_name, last_name и int.

Моя проблема — вставка записей. Мы должны вставить в правильном алфавитном порядке, и любые записи с одинаковыми именем и фамилией отбрасываются. Мой код ниже:

         string input;
cout << endl << "Enter Data File Name:" << endl;
getline(cin, input);
ifstream insertion_file;
insertion_file.open(input.c_str());
if(!insertion_file.fail()){
record_list.clear();

while(!insertion_file.fail() && !insertion_file.eof()){
Personal_record input_rec;
string code_string;
getline(insertion_file, input_rec.last_name);
getline(insertion_file, input_rec.first_name);
getline(insertion_file, code_string);
input_rec.code = string_to_int(code_string);//implementation of requirement 1
if (record_list.empty()) record_list.insert(0, input_rec);
else {
int i = 0;
Personal_record temp;
//while loop increments i and retrieves a record until input_rec.last_name is not smaller than temp.last_name
do {
record_list.retrieve(i, temp);
i++;
} while (input_rec.last_name < temp.last_name && i <= record_list.size());

//if last_names are the same, check first names
if (input_rec.last_name == temp.last_name) {
while (input_rec.first_name < temp.first_name) record_list.retrieve(++i, temp);
//if last names are the same, only insert if there is no matching first name
if (input_rec.first_name != temp.first_name) record_list.insert(i, input_rec);
}

//if last name is not the same, insert
else record_list.insert(i, input_rec);
}
}
} else
cout << "Invalid file name." << endl;

Только код после комментария «реализация требования 1» — мой, остальное — код профессора, который нельзя изменить.

Я не получаю никаких ошибок компилятора, но программа, кажется, зависает где-то в процессе. После вставки записей из файла он должен вернуть управление пользователю, чтобы ввести команду, но этого никогда не происходит. Я пытаюсь использовать отладчик Visual C ++, но я не знаком с ним, и он не дает мне много понимания. Любая помощь очень ценится!

-3

Решение

Вы получаете доступ как к элементу 0, так и к элементу size(), Если не size() в вашей программе на самом деле означает size - 1, это проблема.

1

Другие решения