map und cbuilder
-
in vc6 klappt alles wunderbar, jetzt möchte ich das in cbuilder übernehmen und stosse schon bei dieser zeile auf probleme:
global[asso].reserve(laenge);
asso ist vom typ AnsiString in vc6 vom typ string ... laenge hat einen wert über 1000 ... wenn ich jetzt aber auf global[asso].size() zugreife sagt er mir 0
da es in vc6 klappt und asso sowie laenge die richtigen werte haben, muss es ja an cbuilder liegen .. oder?
weiss wer was ich tun muss?
-
Wie kommst du auf das .reserve() ?
In meiner Hilfe taucht das nur bei vector auf bei map allerdings nicht.
-
Habe gerade festgestellt, das du dich dabei wahrscheinlich auf basic_string beziehst. Nun gut AnsiString der VCL hat keine Methoden size() bzw. Reserve(), dafür gibts sachen wie Length().
-
Sorry, aber ich kann ja nicht editieren.
Oder du nimmst einfach weiterhin basic_string, was spricht da dagegen?
#include <string> //eventl. noch ein using namespace std;Und los gehts.
-
hehe, ne jetzt seid ihr aufn falschen dampfer

das asso ist der string( bzw jetzt AnsiString) .. das ganze ist laut topic eine <map> um genauer zu sagen eine assoziative map
sowas => map_["hallo1"].reserve(100) .. map_["hallo1"] hätte einen speicherbereich von 100zeichen wenn es zum beispiel ein char wäre und map_["hallo1"].size() würde mir die anzahl des reservierten speichers anzeigen
-
mir gehts nur darum das scheinbar .reserve von eben map nichts macht .. statt die 100 zu "allocieren" macht er nix ...
-
Aber genau das habe ich dir doch oben geschrieben. In AnsiString gibts meines wissens weder reserve() noch size(). Deshalb solltest du auch basic_string einbinden, dann kannst du das wie gewohnt weiter benutzen oder du schaust dir in der Hilfe der VCL mal die AnsiString-Methoden an. Z. Bsp. Lentgh().
-
ähm und ich wollte versuchen klarzumachen das das ganze nix mit string oder Ansistring zu tun hat .. reserve ist ein befehl von map und nicht von string!
ok das war zu kompliziert erklärt .. map_[0].reserve(100);
so jetzt ist string weg und ein integer draus... map_ => #include <map> nix mit string!
-
Warum zeigst du nicht mal ein komplettes Beispiel, das man ohne gross zu Raten nachvollziehen bzw. ausprobieren kann?
-
Ja genau zeig mal das komplette Bsp.
Normalerweise greifst du mit
#include <map> std::map < AnsiString, AnsiString > mymap; mymap["hallo"].Length();ja auf eine Methode des zweiten Datentyps den du bei der Map angegeben hast (hier Length() von AnsiString) zu und nicht auf die methoden der Map selbst. Oder etwa nicht?