Zum Inhalt springen

Array mit String zugriff


SwordMaster

Empfohlene Beiträge

Hallo Zusammen,

ich suche nach einer Möglichkeit Arrays mit String- Schlüsseln zu verwenden.

Also nicht

array[1] = "abc".

sondern

array["abc"] = 1.

Am bestern wärs wenn ich nicht nur Integer sondern auch Strings oder HWNDs verwalten kann.

Ein bekannter meinte es gäbe eine Hash Table der stl.

Aber irgendwie bekomme ich das ganze nicht zum laufen.

Ich verwende Visual Studio 6.0.

Bisher hab ichs mit

#include <ext/hash_map>

oder #include "map.h" versucht.

Immer kann VS die Include Datei nicht finden.

Muss ich dazu noch irgend ein SDK zusätzlich installieren? Ist mein Visual Studio evtl doch schon zu alt?

Oder was mache ich falsch?

Viele Grüße

Stefan

Link zu diesem Kommentar
Auf anderen Seiten teilen

Immer kann VS die Include Datei nicht finden.

Muss ich dazu noch irgend ein SDK zusätzlich installieren? Ist mein Visual Studio evtl doch schon zu alt?

MSVC 6 ist sehr alt. Selbst vier Versionen später, in VC 2008, sind die Erweiterungen des TR 1 (und dazu zählt ext/hash_map, soweit ich weiß) nur als Zusatzpaket verfügbar. Eine Hashmap brauchst du aber IMHO gar nicht, eine einfache Map tut's auch. Der Header dazu heißt <map>, und der sollte auch in VC6 zu finden sein.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Klotzkopp

Ich war schon ein paar jährchen nichtmehr aktiv. Aber schön dass ihr die schnelle reaktionszeit beibehalten habt :-).

Bald werde ich mir einen neuen PC (mit Vista) kaufen. Spätestens dann werde ich mich mal um eine neuere version von VS umsehen müssen.

Aber was man gewöhnt ist gibt man halt ungern her :-).

Ich habs jetzt ausprobiert, funktioniert auch soweit schon ganz gut. Vielen Dank

std::map<char *,int> paar;

paar["Key"] = 1;

paar["Key2"] = 16;

Jedoch bekomme ich ein 7 Warnungen.... z.B.

C:\WinLab\ForeignEditor\ForeignSkriptParser.cpp(111) : warning C4786: 'std::reverse_bidirectional_iterator<std::_Tree<char *,std::pair<char * const,int>,std::map<char *,int,std::less<char *>,std::allocator<int> >::_Kfn,std::less<char *>,std::allocat

or<int> >::iterator,std::pair<char * const,int>,std::pair<char * const,int> &,std::pair<char * const,int> *,int>' : Bezeichner wurde auf '255' Zeichen in den Debug-Informationen reduziert

Weißt du evtl ob/was ich falsche mache?

Viele Grüße

Stefan

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jedoch bekomme ich ein 7 Warnungen.... z.B.

...

Bezeichner wurde auf '255' Zeichen in den Debug-Informationen reduziert

Die Warnung C4786 kannst du getrost ignorieren. Der VC6-Debugger hat bei der Länge der Bezeichner eine Beschränkung auf 255 Zeichen. Durch die verschachtelten Templates der Standardbibliothek ist diese Grenze schnell erreicht, das hat aber keine Auswirkung auf die Lauffähigkeit des Programms.

Allerdings hast du da ein anderes Problem: Dein Schlüssel-Typ ist char*. Das ist insoweit problematisch, dass std::map den operator< benutzt, um die Elemente zu sortieren. Der Kleiner-Operator für char* vergleicht aber nur die Adressen der Strings, nicht die Inhalte. Das funktioniert zwar, aber die Sortierungsreihenfolge wird alles mögliche sein, nur nicht alphabetisch. Du könntest ein benutzerdefiniertes Sortierprädikat als dritten Templateparameter angeben. Einfach ist es IMHO aber, wenn du als Schlüsseltyp std::string benutzt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...