Ich verstehe nicht, warum Multimap existiert, wenn wir eine Karte von Vektoren oder eine Karte von Sätzen erstellen können. Für mich nur Unterschiede sind:Was ist der Vorteil von Multimap gegenüber Vektoren?
- mit
equal_range
in multimap für Elemente eines Schlüssels und in der Karte von Vektoren bekommen wir einfach[]
Operator verwenden und Vektor-Elemente. - mit
multimap.insert(make_pair(key,value))
in Multimap zum Hinzufügen von Elementen undmap_of_vectors[key].push_back(value)
in der Vektorkarte.
Warum also Multimap verwenden? Für mich ist es besser, einen Vektor als zwei Iteratoren zu haben, um alle Werte eines Schlüssels zu erhalten.
Diese Frage gilt auch für unordered_map von Vektoren und unordered_multimap.
Ich muss zugeben, ich habe den Zweck von 'multimap' nie verstanden:/ –
Ich etwas spät in der Frage, aber auch Multimap verbraucht viel mehr Speicher als die Karte der Vektoren aufgrund der extra Zeiger.Der einzige Grund, warum ich sie verwende, ist, wenn ich den Schlüssel jedes Elements behalten möchte (indem ich 'push_back' drücke, wird es nicht beibehalten). – Jcao02
Multimap ist großartig, wenn du nicht nur doppelte Schlüssel mit unterschiedlichen Werten verfolgen willst, Sie möchten aber auch jedes Schlüssel/Wert-Paar auf einen Blick löschen. Eine Karte von Vektoren ist dafür nicht geeignet, und während Sie eine Liste von Listen verwenden können, ist es bequemer, einfach eine Multimap zu verwenden. – richizy