« Multiset » et « multimap » - Quel est le point?
-
27-09-2019 - |
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.