map methode exits()?
-
Hallo zusammen,
ich habe so etwas implementiert:
void setValue(int key, string value){ map.find(result)->second = value; }Das klappt wunderbar aber nur wenn ein Key der gennanten result vorhanden ist. Gibt es eventuell eine Möglichkeit erst zu überprüfen ob so ein Key in der Map ist und dies mit if-Anweisung zu splitten?
-
Find gibt doch zurück, ob das Element gefunden wurde. http://www.cplusplus.com/reference/stl/map/find/
Allerdings wäre es ziemlich ineffizient, zuerst zu schauen, ob es existiert, und dann nochmal zu suchen. Einfach auf end prüfen:
void setValue(int key, string value) { // falls dein compiler auto kann, einfach "auto iter = ..." std::map<int, string>::iterator iter = map.find(key); if(iter == map.end()) // nicht gefunden else iter->second = value; }
-
std::maphat die tolle Eigenschaft beim Zugriff mit demoperator[]immer ein Objekt zurückzugeben wird, notfalls wird eins default-konstruiert und dann zurückgegeben. Damit geht dannvoid setValue( int key, const string& value ) { mymap[key] = value; }
-
Danke dir PI. Genau nach so etwas einfachem hatte ich gesucht. Iteratoren sind mir nicht eingefallen

-