std::unordered_map et des doubles de clés
Je suis en utilisant un stl unordered_map, et je n'arrive pas à obtenir le nombre de méthode de travail.
C'est mon programme:
typedef unordered_map<char, int> Mymap;
int main()
{
Mymap m;
m.insert(Mymap::value_type('a', 1));
m.insert(Mymap::value_type('b', 2));
m.insert(Mymap::value_type('c', 3));
m.insert(Mymap::value_type('b', 4));
m.insert(Mymap::value_type('b', 5));
cout << m.count('b') << endl;
return 0;
}
La documentation pour unordered_map dit que unordered_map::count(const Key& k)
renvoie le nombre d'éléments avec la clé k
.
Donc j'attendrais la sortie ici pour être 3
, alors que la production réelle est 1
. Pourquoi?
OriginalL'auteur Bee San | 2011-11-14
Vous devez vous connecter pour publier un commentaire.
Un
unordered_map
maintient un mappage 1:1 de la clé de la valeur, de sortecount
renvoie toujours zéro ou un.Vous avez besoin d'un
unordered_multimap
si vous voulez mapper plusieurs valeurs à une seule touche.find(...) != end()
?En effet, le nom
count()
est trompeuse.exists()
serait mieux.count()
est une partie de l'interface pour tous les conteneurs associatifs.Manta:
map
est un unique conteneur associatif doncm.count()
renvoie 0 ou 1. Mais pour un conteneur associatif en général, telles que le multiset, multimap, il peut renvoyer des valeurs supérieures à 1.Je vois, genericity. 🙂
OriginalL'auteur James McNellis
De sortie
OriginalL'auteur jfs