Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 22.08.2003, 14:50 Titel: STL Map: Funktionsweise und Schlüssel-typen |
|
|
Hi,
weiß jemand von euch der sich mit der STL beschäftigt, wie ungefähr
das STL template "map" funktioniert (Innere Funktionsweise)?
Ich habe mir in der MSDN mal ein paar Code Ausschnitte angeschaut,
allerdings habe ich mich nicht so gut zurecht gefunden,
was wahrscheinlich daran liegt, dass ich die STL nie benutzt habe und
daher wenig über sie weiß.
Meine zweite (die eigentliche) Frage ist:
Kann man als Schlüssel zB auch eine Klasse übergeben?
Und wenn ja, muss man dann vergleichsoperatoren o.ä. überladen,
oder wird das alles automatisch von dem template erledigt (glaube ich aber irgendwie nicht)? |
|
Nach oben |
|
 |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 22.08.2003, 15:07 Titel: |
|
|
Ich vermute mal, dass eine map aus zwei listen oder vectoren besteht.
Dann werden eben in der richtigen Reihenfolge die Elemente gespeichert.
<edit>
Wenn man dann die Wertepaare auslesen will, dann werden die beiden vectoren oder listen durchlaufen, bis der eine Wert gefunden wird. Dann wird der Wert der anderen Liste zurückgegeben, der an der selben Stelle steht.
</edit>
Zur zweiten Frage: Ich denke schon, dass das geht, aber als Schlüssel kannst du dann nur Instanzen von Klassen übergeben.
Code: | class Klasse
{
};
map<Klasse, int> KlassenMap;
Klasse InstanzderKlasse;
KlassenMap[InstanzderKlasse]=10; |
_________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 22.08.2003, 15:20 Titel: |
|
|
zur Zweite Frage:
Wie sollen denn die Schlüssel verglichen werden?
Bei den Built in typen ist das ja nicht schwer,
aber wenn ich in der Schlüsselklasse zB 3 membervariablen
drinne habe die garnicht mit verglichen werden sollen?
Man müsste dann ja noch eine methode der klasse implementieren (operator überladen), die zwei Schlüssel vergleicht und sortiert. |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 22.08.2003, 15:22 Titel: |
|
|
Wenn du Algorithmen auf den Container anwenden willst, musst du den Copy-c'tor, den =-Operator und den <-Operator überladen. Und so fügt man neue Wertepaare in den Container ein:
Code: |
deineMap.insert(make_pair(schlüssel, wert));
|
_________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 22.08.2003, 15:31 Titel: |
|
|
@Hazel:
Was meinst du mit algorithem?
Meine eigenen oder die der STL Map?
Meine Frage bezog sich mehr auf eine sortierte map:
Code: |
map<int, string, less<int>
|
Kann die map sortiert weden wenn ich als Schlüssel eine Klasse angebe? |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 22.08.2003, 16:09 Titel: |
|
|
Kampfhund hat Folgendes geschrieben: | zur Zweite Frage:
Wie sollen denn die Schlüssel verglichen werden?
Bei den Built in typen ist das ja nicht schwer,
aber wenn ich in der Schlüsselklasse zB 3 membervariablen
drinne habe die garnicht mit verglichen werden sollen?
Man müsste dann ja noch eine methode der klasse implementieren (operator überladen), die zwei Schlüssel vergleicht und sortiert. |
Wie ich gesagt habe... Operatoren überladen.
Und mit Algorithmen meine ich die STL Algorithmen(find, sort, for_each, partition...). _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 22.08.2003, 16:19 Titel: |
|
|
ok, dann ist alles klar
thx @ all |
|
Nach oben |
|
 |
|