Der folgende Code diesen Fehler verursacht:Warum erhalte ich einen Fehler "Vektor-Iterator + Offset außerhalb des Bereichs"?
if (bestLine.size() > searchDepth - depth)
bestLine.erase(bestLine.begin(), bestLine.end() - searchDepth - depth);
Wenn ich den Wert searchDepth - depth
zum Zeitpunkt des Fehlers überprüft, war es 0
.
So im Wesentlichen,
if (bestLine.size() > 0)
bestLine.erase(bestLine.begin(), bestLine.end());
verursacht diesen Fehler. (Oder auch nicht. Siehe Anmerkungen unten).
Mein Wissen der obige Code den gesamten Vektor löschen sollte, die das gewünschte Verhalten in diesem Fall ist.
Was mache ich falsch?
Haben Sie den ersten Code mit dem zweiten Code ersetzen (was Sie denken, im Wesentlichen gleich ist), und sehen, ob der Fehler noch kommt? – Nawaz
Gute Idee. Nein, ich habe keinen Fehler erhalten. Jetzt bin ich wirklich verwirrt. Ich fügte 'cout << searchDepth-depth;' vor diesen zwei Zeilen hinzu und sah zwei Nullen vor der Debug-Assertion. –
Try Klammern Ihren Ausdruck 'bestLine.end() Zugabe - (searchDepth - Tiefe)' – Blastfurnace