цикл for не заканчивается, когда выполняется условие

for(it = gameObjects.begin();it!=gameObjects.end();it++){
    it->second->update(frameTime);
    if(it->second->getSprite()->GetPosition().y > 500){
        std::cout << "Removing enemy" << std::endl;
        std::map<sf::String,VisibleGameObject*>::iterator itor = Remove(it->second->getName());
        if(itor!=gameObjects.end()){
            std::cout << "itor doesn't equal" << std::endl;
            it=itor;
        }else{
            std::cout << "itor = end" << std::endl;
            it=itor;
        }
    }
}

Как только напечатано itor = end , it ошибки - «итератор набора карт не может быть увеличен». Я думал, что цикл for должен завершиться, прежде чем он снова увеличится, так как it! = gameObjects.end () будет ложным после этого. Добавление разрыва в операторе else решает проблему.

Почему он не работает без break ? Я предполагаю, что это как-то связано с тем, когда итератор увеличивается по сравнению с тем, когда условие проверен.

0
задан pighead10 28 January 2012 в 14:47
поделиться