Ошибка при удалении элемента в мультисете с ++

Я класс с переменной члена, которая

multiset < pair<TrainType, map<string, set<tm>>>> m_oTrainGraphic;

TrainType - это enum. Я вставляю некоторые элементы в m_oTrainGraphic Контейнер. У меня есть метод, который принимает параметр типа tmи что я не хочу делать, это удалить те элементы, которые имеют элемент типа tm который равен параметру метода. Вот метод.

bool DeleteTrain(const tm& time)const
    {
        for (auto it = m_oTrainGraphic.begin(); it != m_oTrainGraphic.end(); ++it)
        {

            for (auto iter = it->second.begin(); iter != it->second.end(); ++iter)
            {
                for (auto i = iter->second.begin(); i != iter->second.end(); ++i)
                {
                    if (i->tm_hour == time.tm_hour
                        && i->tm_min == time.tm_min)
                    {
                        m_oTrainGraphic.erase(it);
                    }
                }

            }
        }
    }

Проблема в том, что я получаю ошибку при попытке стереть его. Спасибо за совет!

0 ответов

Другие вопросы по тегам