Ошибка Expression: map/set iterators incompatible при выборе элемента в контейнере map
Есть словарь с предметами и оценками
map<string, int> Session::GetSubjects()
{
return subjects;
}
А также структура содержащая словарь
struct Session {
void AddSubject(string sub, int mark);
void DeleteSubject(string sub);
map<string, int> GetSubjects();
string GetAllSub();
private:
map<string, int> subjects;
};
При написании в консоли название предмета, который хочу изменить возникает ошибка.
case 10:
{
std::cout << "Введите номер семестра: ";
int sem = InputInt();
if (sem < 0 || sem > temp->data.sessions.size()) throw "Неправильный ввод номера семестра!";
std::cout << "Введите название предмета: ";
string subj = InputString();
map<string, int> ::iterator it = temp->data.sessions[sem].GetSubjects().find(subj);
if (it == temp->data.sessions[sem].GetSubjects().end()) {
throw "Такого предмета нет в данной сессии!";
}
else {
std::cout << "Изменение предмета с " << it->first << " на: ";
it->second = InputMark();
}
}