const Zugriff auf Hashmap
-
Hallo zusammen. Ich habe eine hash_mapstd::string,std::string und muss in einer funktion einen const zugriff darauf haben.
std::string blah() const { return map["blah"]; }Aber das klappt so nicht, da kommt ein riesen stacktrace das irgendwas den qualifier entfernt. Was muss ich also machen um die hashmap dazu um zu biegen das es const bleibt?
-
hash_map? Du meinst wohlstd::map, das ist aber keine Hash-Map.Benutze für deinen Fall die Memberfunktion
find(). Deroperator[]funktioniert nur bei Objekten, die nichtconst-qualifiziert sind, da er möglicherweise einen neuen Eintrag hinzufügen und somit das Objekt verändern könnte.
-
Nexus schrieb:
hash_map? Du meinst wohlstd::map, das ist aber keine Hash-Map.Das man ja sein. Aber eine hash_map ist eine hash_map.

-
Argh an sowas hätte ich auch selber denken können, riesen dank für den hinweis. Jetzt gehts.
-
Hm, ich kannte gar keine
hash_map, nurunordered_map...Ist ja auch egal - sofern die Schnittstelle gleich wie bei
mapist, gilt das gleiche bezüglichoperator[].
-
Wenn du eine Hashmap willst, dann gibt es std::tr1::unordered_map.
-
Nexus schrieb:
Hm, ich kannte gar keine
hash_map, nurunordered_map...Bist vielleicht zu stark auf den Standard fixiert.
sgi: http://www.sgi.com/tech/stl/hash_map.html
Microsoft: http://msdn.microsoft.com/en-us/library/6x7w9f6z(VS.80).aspx
GCC: http://zitronensaft.blogspot.com/2008/02/using-hashmap-on-gcc.html
-
volkard schrieb:
Bist vielleicht zu stark auf den Standard fixiert.
Hm, da könnte sogar was dran sein.

Für solche Dinge kam ich mit der Standardbibliothek und Boost meist recht weit und sah keinen Grund, mich noch weiter umzusehen. Externe Bibliotheken benötigte ich hauptsächlich für exotischere Dinge wie Grafik etc.
Trotzdem fände ich es nächstes Mal noch hilfreich, man würde wenigstens eine Randbemerkung zu den benutzten Typen anbringen, wenn diese nicht im C++-Standard enthalten sind.
