Ошибка 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();
        }
    }

Ответы (0 шт):