L'aide d'un Ensemble d'Itérateur en C++

Lorsque j'essaie d'utiliser un ensemble d'itérateur en mode debug en C++, j'obtiens un message d'erreur qui dit "carte/jeu de itérateur pas dereferencable". Je ne comprends pas parce que je pensais que dereferincing était la façon dont vous êtes censé utiliser un itérateur. Le code ressemble à ceci:

set<int>::iterator myIterator;
for(myIterator = mySet.begin();
    myIterator != mySet.end();
    myIterator++)
    DoSomething(*myIterator)

Qui est le format de tous les exemples que j'ai vu en ligne sur la façon d'utiliser les itérateurs. Ce que je fais mal?

Ce qui est DoSomething déclarée?
Cet exemple semble plausible correcte (à moins d'un manque ;). Vous avez besoin de poster quelque chose de plus complet qui, de fait, expose le problème que vous rencontrez. Comment est mySet rempli, par exemple?
Est-il un moment de la compilation ou de l'exécution d'erreur?
Alors qu'il probablement ne pas faire une différence dans ce cas, vous pourriez obtenir de meilleures performances avec: ++myIterator. Le suffixe de l'opérateur nécessite de faire une copie de l'itérateur.
Au lieu de montrer ce que le code "ressemble", nous montrer ce que le code est en réalité. Aussi, il est préférable d'utiliser les pré-incrémentation, plutôt que de la post-incrémentation sur les itérateurs, en raison de la post-incrémentation nécessitant la création d'un inutile temporaire.

OriginalL'auteur Alex319 | 2009-12-14