J'ai un vector<int>
appelé pitches
. Je reçois bad access
périodique sur la dernière ligne ci-dessous:Mauvais accès à l'itérateur vecteur de lecture
int play = 0;
bool didFind = 0;
vector<int>::const_iterator iterator;
for (iterator = pitches.begin(); iterator != pitches.end(); ++iterator) {
if (*iterator > lastpitch) { // lastpitch is an int
didFind = 1;
play = *iterator;
break;
}
}
if (!didFind) play = *(pitches.begin()); // this line gives me bad access
J'avais déjà essayé *pitches.begin()
sur la dernière ligne, mais que l'accès toujours fourni mauvais et je comprends maintenant. Mais tandis que je l'obtiens moins souvent maintenant, ce play=*(pitches.begin());
fait toujours la même occasionnellement. Je ne vois rien dans ce qui précède qui causerait cela, aucune suggestion appréciée.
Le vecteur est-il vide à ce moment-là, peut-être? (En particulier, en tenant compte du fait que 'didFind' est faux ici.) – jogojapan
Une note sur le style: il est généralement préférable d'utiliser true/false au lieu de 1/0 lorsqu'il s'agit de' bool's. – jaymmer
@jaymmer merci pour suggestion. – johnbakers