std::map - Anfängerfrage
-
Hallo!
Wenn ich mit einem Schlüssel auf eine std::map zugreife, und es keinen Eintrag zu diesem Schlüssel gibt, was bekomme ich dann zurück?
Danke!
Mitsch
-
Dann wird ein Eintrag für den Schlüssel eingefügt.
-
nicht unbedingt, nur wenn du sowas wie
map_[5] = 3; machst.
bei map<int, int>::iterator i = map_.find(5);
wird nichts eingefügt, sondern du bekommst den end()-iterator zurück
-
scenario * scenerylist::getbyName(char * index) { return scen_map[std::string(index)]; }ist mein code-sniplet. Wenn ich einen unbekannten index verwende, sollte er doch einen NULL-Pointer zurückgeben, oder stehe ich auf der Leitung?
Mitsch
-
Mitsch schrieb:
scenario * scenerylist::getbyName(char * index) { return scen_map[std::string(index)]; }ist mein code-sniplet. Wenn ich einen unbekannten index verwende, sollte er doch einen NULL-Pointer zurückgeben, oder stehe ich auf der Leitung?
Mitsch
Das würde sogar funktionieren denn wenn kein Elememt mit dem Key index existiert dann wird ein neuer scenario * in die map eingefügt der mit null initialisiert ist. Auf diese weise wird aber bei jedem zugriff auf einen nicht vorhandenen Key die map immer grösser.
Es wäre also besser wenn du mit find das Element suchst und wenn nichts gefunden wird einfach 0 zurückgibst.
Kurt
-
Uh, heisser Tipp, vielen Dank - da wäre ich nie draufgekommen

Werde ich gleich mal testen