Hallo Forum,
was passiert, wenn ein Key von std::map<int, std::list<sf::Vector2f> > nicht vorhanden ist, man allerdings durch die Liste iteriert?
Als konkretes Beispiel:
Ich verwende die nachfolgende Map zur Einteilung der Karte eines Strategiespiels in eine Vielzahl kleiner Rauten (mit dem Key int). Die Koordinaten der sich in einer Raute befindenden Einheiten werden in einer Liste gespeichert (std::list<sf::Vector2f>):
|
C-/C++-Quelltext
|
1
|
std::map<int, std::list<sf::Vector2f> > mMapEinheitenKoordinaten;
|
Bei der Kollisionsabfrage werden dann nur die Einheiten, die sich auf der entsprechenden Raute + die umliegenden 8 Rauten betrachtet, dadurch spare ich mir eine Vielzahl von Abfragen. Ich iteriere also durch die Liste von Koordinaten mit entsprechendem Key von begin() bis end().
Oft kommt es allerdings vor, dass eine Raute keine Einheiten beinhaltet,
der entsprechende Key existiert dann bei mir im Programm auch
nicht. Kann die folgende Code-Zeile dann irgendwelche Probleme machen?
|
C-/C++-Quelltext
|
1
|
for(std::list<sf::Vector2f>::iterator it = mMapEinheitenKoordinaten[Key].begin(); it != mMapEinheitenKoordinaten[Key].end(); it ++){...}
|
Ich möchte nämlich eigentlich nicht jedes mal mittels find() überprüfen lassen, ob der Key vorhanden ist, wenn dies nicht notwendig ist
Bis jetzt macht es keine Probleme... aber wer weiß ob das immer so ist?