Question

Comme l'indique question ... je ne suis pas le point sur le multisets / < a href = "http://en.wikipedia.org/wiki/Multimap" rel = "noreferrer"> multimaps .

Alors, quel est le but?

Était-ce utile?

La solution

Certains cas d'utilisation:

multimap

  • Avec le code postal comme une clé, toutes les personnes qui ont ce code postal
  • Avec numéro de compte comme la clé, toutes les commandes ouvertes de cette personne / compte
  • Un dictionnaire, avec des explications par mot-clé divers

multiset

est essentiellement une carte avec un nombre clé et un entier.

  • L'inventaire d'un magasin, tous les produits ont leur clé et le montant toujours disponible est la valeur
  • les données de ventes cumulées d'un magasin, chaque fois qu'un produit est vendu le id produit get est ajouté à la multiset augmentant ainsi la quantité vendue

Autres conseils

Un exemple où un multimap serait utile si vous avez eu une situation où la plupart du temps les clés sont uniques, mais ils ne sont parfois pas.

Par exemple, si vous créez une classe de cache qui utilise un hachage comme une clé. La plupart du temps deux objets différents ne seront pas ont le même hachage, de sorte que les clés seront uniques. Mais il est possible que vous obtiendrez des collisions de hachage pour des objets différents, de sorte que vous voulez un multimap pour couvrir cette situation.

Un autre exemple serait une sorte d'index non unique (comme dans une base de données).

En ce qui concerne un multiset - Je pense que ce serait moins utile. La seule chose que je peux penser serait de l'utiliser comme une sorte de liste triée automatiquement.

A multiset ou multimap est simplement pour les situations où il pourrait y avoir plus d'un d'un élément particulier. Par exemple, supposons que vous vouliez créer un index pour un livre. Vous souhaitez numériser à travers le texte, jetez tous les mots vides de sens vraiment commun ( « a », « un », « le », etc.), puis faire une liste de tout le reste, et la place dans le livre où chaque est produite.

Un certain nombre des mots apparaîtront sur plus d'une page, dans ce cas, vous aurez plusieurs entrées en correspondance d'un mot à différentes pages. Une façon de gérer qui serait un multimap de mots aux numéros de page.

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

  

Les cartes sont une sorte de associative   contenants que des éléments stocke formés   par la combinaison d'une valeur de clé et   une valeur mappée, un peu comme la carte   conteneurs, mais permettant à différents   éléments aient la même valeur de clé.

Il est une sorte de registre où les éléments peuvent partager une clé. Vous pouvez penser des entreprises et des employés. Adresse de la rue est une clé et les employés sont des valeurs.

Voici ce que Wikipédia dIt utilisations:

  
      
  • Dans un système d'inscription des étudiants, où les étudiants peuvent être inscrits à   plusieurs classes en même temps, il   pourrait être une association pour chaque   L'inscription d'un élève dans un cours,   où la clé est l'ID étudiant et   la valeur est l'ID de cours. Si un   étudiant est inscrit à trois cours,   il y aura trois associations   contenant la même clé.
  •   
  • L'index d'un livre peut signaler un certain nombre de références pour un index donné   terme, et peut donc être codé comme   Multimap de termes d'indexation à tout   nombre d'emplacements de référence
  •   

Utilisez multimap, où que vous souhaitez utiliser une structure type d'arbre.

L'avantage le plus important d'utiliser un multiset sur un vecteur / liste (ou tout autre récipient) est la complexité temporelle de l'opération de recherche. la complexité du temps de cas moyen pour multiset est O (logn) et unordered_multiset est O (1). La même chose est vrai pour multimap et ordered_multimap.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top