hash_multimap in der msdn



  • hallo,

    kann mir mal jemand erklären, was in diesem Abschnitt steht:

    The hash_multimap should be the associative container of choice when the conditions associating the values with their keys are satisfied by the application. A model for this type of structure is an ordered list of key words with associated string values providing, say, definitions, where the words were not always uniquely defined. If, instead, the keywords were uniquely defined so that keys were unique, then a hash_map would be the container of choice. If, on the other hand, just the list of words were being stored, then a hash_set would be the correct container. If multiple occurrences of the words were allowed, then a hash_multiset would be the appropriate container structure.

    Ich kann es zwar übersetzen, aber irgendwie fehlt mir der Sinn wohl zwecks Erfahrungsmangel 😉

    Vielen Dank



  • Da steht in etwa so was, wie hier drin:

    http://de.wikipedia.org/wiki/Hashtabelle

    Kannst ja mal durchlesen, verstehen und dann das Englische nochmal lesen, dann sollte alles klar werden. 😉



  • Also der Sinn des ersten Satzes erschließt sich mir nicht, da hash_multimap in Konkurrenz zu std::multimap steht sollte der Vergleich sich auf std::multimap beziehen und nicht solch seltsame Prosa wie im ersten Satz.
    Der zweite ist stilistisch unter aller Sau, naja eigentlich der ganze Abschnitt, deshalb tust du dich auch so schwer ihn zu verstehen.
    Er hat einen Informationsgehalt von nahezu 0, da jeder der die Datenstrukturen kennt das bereits weiß und jeder der es noch nicht weiß, so wie du, damit nichts anfangen kann.



  • Nebenbei, der Standard enthält mittlerweile im TR1 std::tr1::unordered_multimap, damit fährt man denke ich besser.



  • drakon schrieb:

    Da steht in etwa so was, wie hier drin:

    http://de.wikipedia.org/wiki/Hashtabelle

    Kannst ja mal durchlesen, verstehen und dann das Englische nochmal lesen, dann sollte alles klar werden. 😉

    Naja da steht mehr drin, wie hashing überhaupt funktioniert, aber mir geht es eigentlich darum, wann benutzt man hash_map, hash_multimap, hash_set, hash_multiset. Dass da ein Beispiel gebracht wurde, ist ja prinzipiell schonmal ideal, aber ich kapier halt nicht, was es mir sagen will.



  • Hallo,

    banshee schrieb:

    Naja da steht mehr drin, wie hashing überhaupt funktioniert, aber mir geht es eigentlich darum, wann benutzt man hash_map, hash_multimap, hash_set, hash_multiset.

    Das Zitat aus der MSDN-Doku könnte man so interpretieren:

    Wir wollen Wörtern deren Bedeutungen zuordnen. Jetzt kann es vorkommen, dass es für ein Wort mehrere Bedeutungen gibt. Dann erlaubt die hash_multimap, dass das gleiche Wort mehrfach als Key benutzt werden kann, zu jedem gleichen Key kann man dann aber eventuell mehrere Bedeutungen als Type-Wert hinterlegen. Gibt es zu einem Key immer nur einen Type-Wert, dann kann man auf die hash_map zurückgreifen, diese gestattet auch nur, dass einem Key-Wert immer nur genau ein Type-Wert zugeordnet sein kann. Ganz analog dazu wird die Verwendung von hash_set/hash_multiset erklärt, nur dass es keine Type-Werte gibt, d.h., man kann nur, um beim Zitat zu bleiben, die Wortliste in das hash_set/hash_multiset ablegen, wobei hash_multiset das Vorkommen mehrerer gleicher Wörter ermöglicht, in ein hash_set kann jedes Wort aus der Liste nur einmal aufgenommen werden.

    MfG,

    Probe-Nutzer



  • .filmor schrieb:

    Nebenbei, der Standard enthält mittlerweile im TR1 std::tr1::unordered_multimap, damit fährt man denke ich besser.

    Yo, wer bei unordered den Unterschied zur map/multimap nicht gefunden hat, sollte noch mal in sich gehen. 😉



  • Probe-Nutzer schrieb:

    Wir wollen Wörtern deren Bedeutungen zuordnen. Jetzt kann es vorkommen, dass es für ein Wort mehrere Bedeutungen gibt. Dann erlaubt die hash_multimap, dass das gleiche Wort mehrfach als Key benutzt werden kann, zu jedem gleichen Key kann man dann aber eventuell mehrere Bedeutungen als Type-Wert hinterlegen. Gibt es zu einem Key immer nur einen Type-Wert, dann kann man auf die hash_map zurückgreifen, diese gestattet auch nur, dass einem Key-Wert immer nur genau ein Type-Wert zugeordnet sein kann. Ganz analog dazu wird die Verwendung von hash_set/hash_multiset erklärt, nur dass es keine Type-Werte gibt, d.h., man kann nur, um beim Zitat zu bleiben, die Wortliste in das hash_set/hash_multiset ablegen, wobei hash_multiset das Vorkommen mehrerer gleicher Wörter ermöglicht, in ein hash_set kann jedes Wort aus der Liste nur einmal aufgenommen werden.

    genial, vielen Dank 😉


Anmelden zum Antworten