Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Meandor

Frischling

Beiträge: 55

Wohnort: Oberhausen

Beruf: Student

  • Private Nachricht senden

11

21.04.2005, 15:11

map erweitern

Ich hätte da auch eine Frage! Heiko schreibt in seinem Buch das man sich maps automatisch sortieren nach dem KEY also der Variablen die vorne steht.

map<double, string,> Punktetabelle; // Map
map<double, string,>::iterator i; // Iterator für die Map
pair<double, string, > Spieler; // Paar-Objekt für die Map

soweit alles klar ich benötige aber nun eine Map mit mehr als nur 2 Argumenten, wie in im Beispiel, wobei die Map immer noch automatisch sortiert wird!Das ist mir schon wichtig

zB:
map<double, string, int, int >Punktetabelle;//Neue Map mit mehreren
map<double, string, int, int >::iterator i;
quadro<double....??????? (habe das schon mal ausprobiert Compiler mäckert dann aber) und mit pair funktioniert das auch nicht mehr!
wie könnte ich dann die einzelnen Variablen noch ansprechen? Geht das überhaupt so? Oder hat eine Map immer nur 2 Argumente? Wobei das erste der KEY ist?

Jens

Wär toll wenn das gehen würde dann hätte man es um einiges einfacher Arrays automatisch zu sortieren.

12

21.04.2005, 17:03

so eine map hat wohl immer nur 2 argumente wo der erste der key is, ja ich glaub schon.
aber du kannst eine index-map nehmen und über die
deine anderen werte wiederum den ids aus der ersten map
zuordnen.
also z.b. so:

C-/C++-Quelltext

1
2
3
4
5
stdext::hash_map<int, meineklasse *> map1;
stdext::hash_map<string, int> map2;

map1[0] = new meineKlasse();
map2["hallo"] = 0;

nu kannste dir immer aus der zweiten map mit string als key
die id für den eintrag in der ersten map holn.
wobei ich nicht sicher bin ob das genau dein problem abdeckt.
du kannst doch auch einfach ne klasse baun die
deine variablen kapselt und dann
pointer auf die instanzen in die map stecken also dann so

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct/class CMeineHilfsKlasse{
public:
   int varable1;
   std::string variable2;
   double variable3;

//usw.

};

typedef stdext::hash_map<int, CMeineHilfsKlasse *> mymap;
mymap meineMap;

meineMap[0] = new CMeineHilfsKlasse(...);

//irgendwo dann halt weider löschen

for(mymap::const_iterator it = meineMap.begin(); it != mymap.end(); it++){
   if (it->second)delete it->second;
}


ich hoffe ich konnte helfen.

gruß 23h