Assioziative Arrays
-
Scorcher24 schrieb:
Ich weiss jetzt nicht, ob die STL da was bietet, ......
Was schon ein wenig erstaunlich ist, nachdem im gesamten Thread bereits darauf hingewiesen wurde.

Gruß,
Simon2.
-
Simon2 schrieb:
Was gibt's denn ´daran "nicht wirklich" ?
Es sind keine Arrays sondern Bäume, zumindest was die Schlüssel betrifft.
-
Simon2 schrieb:
Scorcher24 schrieb:
Ich weiss jetzt nicht, ob die STL da was bietet, ......
Was schon ein wenig erstaunlich ist, nachdem im gesamten Thread bereits darauf hingewiesen wurde.

Gruß,
Simon2.
Man kann ja nicht alles kennen und (D)Evil hat gepostet während ich am tippen war :P. Maps hab ich noch nie gebraucht ;).
rya
-
~john schrieb:
Simon2 schrieb:
Was gibt's denn ´daran "nicht wirklich" ?
Es sind keine Arrays sondern Bäume, zumindest was die Schlüssel betrifft.
Also mir klang es nicht danach, als ob dem Threadersteller dieser (nur im technischen Hintergrund verborgene) Unterschied wichtig wäre.
Gruß,
Simon2.
-
Scorcher24 schrieb:
...Man kann ja nicht alles kennen und (D)Evil hat gepostet während ich am tippen war :P. Maps hab ich noch nie gebraucht ;).
rya
Finde ich aber abgefahren, weil die STL-Container die Teile sind, die ich am praktischsten finde (und am meisten vermisse, wenn ich in C programmieren muss).
Da sieht man mal, wie unterschiedlich Programmierer ein und dieselbe Sprache wahrnehmen können....Gruß,
Simon2.
-
Simon2 schrieb:
Also mir klang es nicht danach, als ob dem Threadersteller dieser (nur im technischen Hintergrund verborgene) Unterschied wichtig wäre.
Es war auch mehr als Warnhinweis zu deuten, denn assoziative Container verhalten sich beim Einfügen, Löschen und Lesen nicht wirklich wie ein Array, und das könnte irgend wann von Interesse sein.
-
Du könntest dir auch ne entsprechende Klasse bauen (Den Index-Operator überladen). Vielleicht wäre das am besten, du könntest eben nach Belieben anpassen...
MfG
-
Also um einen Standard-Container an Schnelligkeit und Sicherheit zu übertreffen muss man sich schon anstrengen ;).
Wenn dir in einer std::map die Zugriffszeit von O(log n) zu langsam ist, kannst du ja ne Hash-Map nehmen. Die gibts im TR1. Wenn dein Compiler das unterstützt, findest du std::tr1::unordered_map in <unordered_map>. Wenn alles klappt hast du da konstante Zugriffszeit, fast so wie in einem Array :xmas2:Gruß
Don06
-
Also so gut kenn ich mich mit c++ nich aus, ich kannte das nur aus php und dachte es gäbe sowas vielleicht auch in c++.
Ich glaub ich mach das einfach irgendwie anders, die Vorschläge hier sind mir zu kompliziert

-
Jakel schrieb:
Ich glaub ich mach das einfach irgendwie anders, die Vorschläge hier sind mir zu kompliziert

Was ist ein einer std::map kompliziert?
#include <string> #include <map> int main () { std::map<std::string, int> karte; karte["eins"] = 1; karte["zwei"] = 2; }P.S. Arrays kennt PHP gar nicht, das wird auch so in der Doku beschrieben. Es gibt nur Maps, die man blödsinnigerweise als Arrays bezeichnet. Wenn man nur wenige Dinge in eine Map ablegt mag das kein Problem sein. Aber in C++ ist oftmals Geschwindigkeit ein Thema. Und es besteht ein nicht unerheblicher Unterschied ob man O(1) oder O(log n) für den Zugriff auf eine Element benötigt.
-
Zu dem mit PHP:
Das is mir neu, aber man lernt ja nie aus^^Zum Code:
Also so versteh ichs jetzt auch, aber das erste Beispiel (von wem auch immer) war irgendwie komplizierter.
-
In dem Borland C++ Builder funktioniert das aber nicht, deswegen hatte ich das hier ja auch eigentlich ins vcl Forum geschrieben...
-
Don06 schrieb:
Also um einen Standard-Container an Schnelligkeit und Sicherheit zu übertreffen muss man sich schon anstrengen ;).
Wenn dir in einer std::map die Zugriffszeit von O(log n) zu langsam ist, kannst du ja ne Hash-Map nehmen. Die gibts im TR1. Wenn dein Compiler das unterstützt, findest du std::tr1::unordered_map in <unordered_map>. Wenn alles klappt hast du da konstante Zugriffszeit, fast so wie in einem Array :xmas2:
Gruß
Don06Was ist mit std::hash_map?
-
Das ist höchstens eine Erweiterung, gehört auf jeden Fall nicht zum Standard.
-
std::hash_map ist eine Microsoft-Erweiterung. Leider unterstützt auch der neue C++-Kompiler von Microsoft (2008) imho nicht den TR1, also muss man da auf Erweiterungen setzen. Wird hoffentlich nachgebessert.
Gruß
Don06
-
Hallo
Jakel schrieb:
In dem Borland C++ Builder funktioniert das aber nicht, deswegen hatte ich das hier ja auch eigentlich ins vcl Forum geschrieben...
Ich weiß ja nicht welchen Code, welche BCB-Version du benutzt oder w3as genau du unter "funktioniert nicht" meinst, aber auf meinem alten BCB5 funktioniert std::map mit dem gezeigten Code selbstverständlich korrekt.
bis bald
akari
-
Don06 schrieb:
std::hash_map ist eine Microsoft-Erweiterung.
heißt die nicht stdext::hash_map?
-
Don06 schrieb:
std::hash_map ist eine Microsoft-Erweiterung. Leider unterstützt auch der neue C++-Kompiler von Microsoft (2008) imho nicht den TR1, also muss man da auf Erweiterungen setzen. Wird hoffentlich nachgebessert.
Gruß
Don06TR1 unterstützung wurde zumindest für VC++9 (VS2008) angekündigt. Vorallem das dies auch mitgeliefert werden soll. Im letzten Download bei meiner MSDN Subscription war es aber nicht enthalten, daher bin ich da echt noch gespannt.
BR
Vinzenz