C++ const std::map reference nicht kompiliert werden

Gibt es einen Grund, warum der übergabe einer Referenz auf ein std::map als const bewirkt, dass der [] - operator zu brechen? Ich bekomme diese compiler-Fehlermeldung (gcc 4.2) wenn ich mit const:

error: no match for 'operator[]' in
'map[name]'

Hier ist der Funktionsprototyp:

void func(const char ch, std::string &str, const std::map<std::string, std::string> &map);

Und sollte ich erwähnen, dass es kein problem ist, wenn ich entfernen Sie die const Schlüsselwort vor std::map.

Wenn ich schon wies richtig, die [] - operator wird eigentlich legen Sie ein neues paar in die Karte, wenn es nicht den Schlüssel finden, das würde natürlich erklären, warum dies geschieht, aber ich kann mir nicht vorstellen, dass dies jemals ein akzeptables Verhalten.

Ob es eine bessere Methode, wie die Verwendung von finden anstelle von [], würde ich es begrüßen. Ich kann nicht scheinen, um Arbeit zu finden, entweder, obwohl... ich erhalte const nicht übereinstimmende iterator Fehler.

InformationsquelleAutor der Frage Joe Bane | 2009-03-26

Schreibe einen Kommentar