Frage

Wie die Frage Staaten ... Ich habe nicht den Punkt zu multisets / < a href = "http://en.wikipedia.org/wiki/Multimap" rel = "noreferrer"> multimaps .

Also, was ist der Zweck?

War es hilfreich?

Lösung

Einige Anwendungsfälle:

multimap

  • Mit ZIP-Code als Schlüssel, alle Menschen, die diese Postleitzahl haben
  • Mit Konto-ID als Schlüssel, alle offenen Aufträge dieser Person / Konto
  • Ein Wörterbuch, mit pro Keyword verschiedene Erklärungen

multiset

ist im Wesentlichen eine Karte mit einem Schlüssel und einer ganzzahligen Zahl.

  • Das Inventar eines Geschäft, alle Produkte haben ihre Schlüssel und die Menge noch verfügbar ist der Wert
  • kumulierten Umsatzdaten eines Geschäftes, wird jedes Mal, wenn ein Produkt verkauft die Produkt-ID erhalten hat hinzugefügt, um die multiset wodurch die Menge verkauft

Andere Tipps

Ein Beispiel, bei dem ein multimap nützlich wäre, wenn Sie eine Situation gehabt, wo die meiste Zeit die Schlüssel sind einzigartig, aber manchmal sind sie nicht.

Zum Beispiel, wenn Sie eine Cache-Klasse wurden die Erstellung, die einen Hash als Schlüssel verwendet. Die meisten der Zeit zwei verschiedene Objekte den gleichen Hash nicht haben, so werden die Schlüssel eindeutig sein. Aber es ist möglich, dass Sie Hash-Kollisionen für verschiedene Objekte bekommen, so dass Sie ein multimap wollen würden, um diese Situation zu decken.

Ein weiteres Beispiel wäre jede Art von nicht-eindeutigem Index (wie in einer Datenbank).

Wie für ein multiset - ich glaube, die weniger nützlich wären. Das Einzige, was ich von wäre denken kann es als eine Art automatisch Liste sortiert zu verwenden.

Ein multiset oder Multimap ist einfach für Situationen, in denen es könnten mehr sein als ein von einem bestimmten Punkt. Zum Beispiel, sagen wir mal Sie einen Index für ein Buch erstellen wollte. Sie würden scannen durch den Text, alle die wirklich gemeinsamen sinnlosen Worte werfen ( „a“, „ein“, „die“, etc.) und dann eine Liste aller Ruhe zu machen, und der Ort, in dem Buch, in dem jedem aufgetreten.

Nicht wenige der Worte mehr als eine Seite erscheinen, in dem Fall, dass Sie mehrere Einträge aus einem Wort Mapping auf verschiedene Seiten haben werden. Ein Weg, um Griff, der eine multimap von Worten zu Seitenzahlen sein würde.

http://www.cplusplus.com/reference/stl/multimap/

  

Karten sind eine Art assoziativer   Behälter, die speichert Elementen gebildet   durch die Kombination von einem Schlüsselwert und   ein zugeordneter Wert, ähnlich wie Karte   Behälter, aber ermöglicht verschiedene   Elemente mit dem gleichen Schlüsselwert haben.

Es ist eine Art von Registry, wo die Elemente einen Schlüssel teilen können. Sie können von Unternehmen und Mitarbeiter denken. Straßenadresse ist ein Schlüssel und Mitarbeiter sind Werte.

Hier ist, was Wikipedia sagt über Verwendungen:

  
      
  • In einem Immatrikulationssystem, wo die Schüler in immatrikuliert können   mehrere Klassen gleichzeitig gibt   könnte ein Verein für jeden sein   Einschreibung eines Studenten in einem Kurs,   wo der Schlüssel ist der Studentenausweis und   der Wert ist der Kurs-ID. Wenn ein   Schüler in drei Kursen eingeschrieben,   gibt es drei Verbände sein   mit dem gleichen Schlüssel.
  •   
  • Der Index eines Buches berichten kann eine beliebige Anzahl von Artikeln für einen bestimmten Index   Laufzeit und damit als ein codierter werden können   Multimap von Indexbegriffen zu einem   Anzahl der Referenzorte
  •   

Mit multimap, wo immer Sie wollen Baum Art einer Struktur verwenden.

Der wichtigste Vorteil der Verwendung eines multiset über einen Vektor / Liste mit (oder einem anderen Behälter) ist die Zeit Komplexität der Suchoperation. Durchschnittsfall Zeitkomplexität für multiset O (logn) und unordered_multiset ist O (1). Gleiches gilt für multimap und ordered_multimap.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top