Comptage du nombre des mêmes valeurs dans la carte

est-il une commande qui compte le nombre de valeurs dans une carte?

comme:

map<int, string> m;
m[1] = "A";
m[22] = "A";
m[53] = "C";
m[12] = "A";
m[6] = "A";

int count = m.count("A");//4

ou devrais-je écrire moi-même, puisque ce n'est pas trop dur?

La première chose qui m'est venue à l'esprit était de créer un autre std::map<string , int> qui sera utilisée pour compter la fréquence de chaque .second
Que devrait être le dernier chose qui vient à l'esprit. Vous êtes juste à l'introduction d'une grande complexité pour accomplir une tâche très simple pour il y a déjà toos.
Dibling: Qu'entendez-vous par une grande complexité? Si vous le voyez sur les réponses ci-dessous, sans C++0x soutien, vous aurez une quantité raisonnable de code à écrire, si vous êtes exploitant STL count_if. Je suis enclin à penser que l'utilisation d'une autre carte nécessitera moins de quantité de code. Aussi à l'aide de la carte a une meilleure exécution de la complexité i.e. O(log n), alors vous avez besoin de passer par tous les éléments de la carte si vous utilisez count_if i.e. O(n)
À l'aide d'un deuxième map pour stocker des fréquences est mieux si vous avez besoin d'exécuter un grand nombre de chefs d'accusation. Cette approche exige également que les éléments stockés dans le conteneur sont comparables. Si vous avez seulement besoin d'effectuer un seul chef d'accusation, alors il est de loin préférable d'énumérer les éléments à l'aide de count_if.
McNellis: je peux comprendre votre point de vue et je pense aussi que votre réponse est agréable et de cours d'enseignement. Mais toujours, c'est de ne pas répondre à ma question à Jean Dibling au sujet de quels types de complexité est à l'aide d'une deuxième carte d'imposer, par rapport à avoir à définir une fonction de l'objet =). Oui, il faut l'opérateur< à mettre en œuvre (sans doute hors de propos si la clé est std::string). Oui, c'est du gaspillage de mémoire si vous ne compter qu'une fois (même si l'affiche n'a pas à spécifier). Mais la complexité dans la mise en œuvre? Je n'ai pas l'acheter =)

OriginalL'auteur calccrypto | 2011-04-01