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.
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.
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. :)