C ++ - Map aus zusammengesetztem Schlüssel erstellen

7

Ich möchte eine Karte erstellen, die den zusammengesetzten Schlüssel enthält. Zum Beispiel habe ich Studentenrolle no und Semester, in denen er / sie studiert. Jetzt möchte ich eine Karte erstellen, so dass Rolle no und Semester zusammen als der Schlüssel für die Karte fungieren.

    
Sudip 18.10.2012, 06:09
quelle

4 Antworten

10

Anstatt eine eigene Klasse für den Schlüssel zu definieren und eigene Vergleichsoperatoren zu definieren, würde ich ein std :: pair verwenden, da Sie nur die Rollennummer und das Semester interessieren.

%Vor%

Wenn Sie für die Rollnummer und das Semester etwas anderes als einen Int verwenden, können Sie genauso gut diese im Paar verwenden. Bedenken Sie jedoch, dass Sie bei Verwendung von benutzerdefinierten Strukturen für diese Objekte Gleichheits- und Vergleichsoperatoren implementieren müssen. In diesem Fall verlieren Sie den Vorteil, ein Paar zu verwenden, anstatt direkt eine andere Struktur zu verwenden.

    
Mitch Lindgren 18.10.2012, 06:20
quelle
8

BEARBEITEN: Ein Moment Zweifel veranlasste mich zu fragen, ob ein operator==() auch von einem Schlüsseltyp geliefert werden muss, da offensichtlich bei der Suche nach Werten in einem map Tests auf Gleichheit sein müssen unter der Haube verwendet. Aber 23.1.2 / 3 im C ++ - Standard von 2003 sagt, dass es nicht notwendig ist: Die Gleichheit zwischen zwei Schlüsselobjekten a und b muss bestimmt werden, indem geprüft wird, ob sowohl a < b als auch b < a falsch sind. :)

%Vor%     
j_random_hacker 18.10.2012 06:13
quelle
1

std :: map keys müssen den Operator & lt; implementieren; für Schlüsselsuche und -einfügung. Beispiel:

%Vor%     
nurettin 18.10.2012 06:17
quelle
1

Sie können einen Strukturtyp definieren, der roll_no und Semesterelement enthält.

%Vor%     
bbg 18.10.2012 06:19
quelle

Tags und Links