Создает ли GetTasks()
новую карту / набор при ее вызове и возвращает ее? Или это возвращает копию набора, где ссылка была бы уместна?
Если это так, то каждый вызов GetTasks()
возвращает новый объект, который не зависит от ранее возвращенных объектов. Сравнение итератора одного из этих объектов с итератором другого такого объекта (например, итераторов begin()
и end()
) не имеет смысла.
Убедитесь, что все ваши итераторы исходят из одного и того же объекта, а не из разных копий одних и тех же данных.
Возможно, вы хотите, чтобы функция GetTasks()
возвращала ссылку или константную ссылку, в зависимости от константности объекта Simulation
:
class Simulation {
...
multimap<int,Task*>& GetTasks() { return m_tasks; }
const multimap<int,Task*>& GetTasks() const { return m_tasks; }
}