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


Anmelden zum Antworten