6
votes

Quand est-il logique d'utiliser une carte?

J'essaie de rassembler des cas lorsqu'il est logique d'utiliser une carte (ensemble d'entrées de valeur de clé). Jusqu'à présent, j'ai deux catégories (voir ci-dessous). En supposant plus d'exister, qu'est-ce qu'ils sont?

veuillez limiter chaque réponse à une catégorie unique et mettre en place un exemple.


Valeurs de propriété ( comme un haricot ) xxx < / Pré>

Présence, avec o (1) performances xxx


4 commentaires

Exemple pragmatique: lorsque vous avez besoin d'un ensemble et que tout ce qui est intégré à votre langue est des cartes, une carte de valeur pour [tout petit type] est un substitut décent.


Dire la vérité, je ne comprends tout simplement pas quelle est la question. Fondamentalement, la liste est infinie tant qu'il y a quelque chose dans l'univers qui n'est pas encore associé à autre chose. Au moins, je ne saurais pas comment juger des réponses ....


@andras: Oui, ce que vous pouvez modéliser avec une carte est infini. Mais il devrait y avoir classification / catégorisation / regroupement de ces modèles. Je choisirai la réponse qui est la touche la plus fascinante / l'esprit.


Je devrais ajouter que l'OP veut exclure les multimaps.


8 Réponses :


5
votes

Structures de données rares (par exemple, une matrice rare ou une matrice): xxx

aussi, je dirais que l'exemple "présence" que vous avez répertorié est mieux fait avec une structure de données définie (par exemple Hashset en Java ou .NET) puisque la partie "cartographie" de la carte n'est vraiment pas nécessaire.


0 commentaires

3
votes

Se souvenir des résultats de la fonction (mise en cache, tampon, Mémoisation ) XXX


0 commentaires

0
votes

Comme Eric Petroelje a déclaré, votre exemple "Présence" est mieux adapté à un ensemble que d'une carte.

Toutefois, si vous souhaitez suivre le nombre d'occurrences de choses, utilisez une carte. Par exemple, vous voulez savoir combien de fois un mot donné apparaît dans un document:

pseudocode: xxx

alors si je veux savoir combien fois le mot "carte" apparaît dans le document, il serait juste d'être WordMap ["plan"]


1 commentaires

Je regrouperais ceux sous "histogrammes", par exemple Nombre de searys pour mot, score reçu pour le test, etc.



0
votes

Une carte est une façon de représenter un graphique . Les clés sont les nœuds du graphique et la valeur d'un nœud particulier N est une liste de tous les nœuds qui ne se connecte à.


1 commentaires

La valeur ... est une liste. Lorsque vous commencez à penser comme ça (aussi la valeur est une carte ) La portée de la question explose. Je voudrais garder cela simple avec des valeurs scalaires (ou zéro dimension).



2
votes

conversion xxx


0 commentaires

1
votes

Si votre langue permet de fournir des matrices associatives et des fonctions / procédures, vous pouvez utiliser des cartes pour construire quelque chose de similaire à l'objet orienté objet (voir Perl pour un exemple classique).

voir ici pour un Explication plus détaillée .


5 commentaires

Pas sûr que je l'obtiens tout à fait, mais c'est intéressant. Pouvez vous donner un exemple?


Si vous regardez comment Perl a ajouté OO Éléments à la langue, vous trouverez de nombreuses informations. Fondamentalement, si vous pouvez utiliser une "signature de méthode" comme clé et un "pointeur de fonction" comme valeur, vous pouvez utiliser un hashmap pour ajouter "comportement orienté objet".


Donc, une signature de méthode (fondamentalement une chaîne) sur une fonction comme Paul -> DealwithPaul () . Me fait penser à la méthode d'usine: Pizza -> Bakepizza () . Bon +1.


Il vous permet également de définir des propriétés à l'aide de la garniture -> (liste des ingrédients de garniture) par exemple. Ou prix-> numéro.


@Kiwicptn - Si vous pensez à la manière dont C ++, par exemple, utilise une table de fonction virtuelle pour déterminer quelle méthode à appeler (base ou dérivée), je pense que c'est ce qu'il reçoit ici. Une classe de base établit une cartographie des signatures à ses méthodes et une classe dérivée peut remplacer ces majuscules avec ses propres méthodes, en modifiant le comportement de la classe.



0
votes

(Merci pour le rebord, matricefrog.)

Dictionnaire (cartographier un terme à une définition) p> xxx pré>

aussi dans cette catégorie p>

EADDRINUSE    -> "Address in use." 
EADDRNOTAVAIL -> "Address not available."


0 commentaires

1
votes

passer du nombre arbitraire de paramètres facultatifs à une fonction, dans une langue qui ne les prend pas en charge:

cars = findAvailableCars(make -> 'Toyota', model -> 'Prius', color -> 'green')


0 commentaires