A propos de unordered_map

Le
Adrien
Bonjour,

J'ai un léger doute sur la fonction membre erase( const key_type& k) de la
classe tr1::unordered_map qui renvoie le nombre d'éléments effectivement
supprimés.

Il me semblait que les clefs étaient uniques, donc il y a-t-il des cas où
cette fonction retourne autre chose que 0 ou 1 ? J'ai regardé quelques docs
en ligne qui ne sont pas très claires sur ce point.

Merci d'avance.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michael Doubez
Le #20531041
On 10 nov, 13:23, Adrien
Bonjour,

J'ai un léger doute sur la fonction membre erase( const key_type& k) de la
classe tr1::unordered_map qui renvoie le nombre d'éléments effectivem ent
supprimés.

Il me semblait que les clefs étaient uniques, donc il y a-t-il des cas où
cette fonction retourne autre chose que 0 ou 1 ? J'ai regardé quelques docs
en ligne qui ne sont pas très claires sur ce point.



unordered_map est le nom standard de multimap. Tu peux y stocker
plusieurs éléments avec la même clé.

--
Michael
James Kanze
Le #20531261
On 10 Nov, 21:04, Michael Doubez
On 10 nov, 13:23, Adrien


> J'ai un léger doute sur la fonction membre erase( const
> key_type& k) de la classe tr1::unordered_map qui renvoie le
> nombre d'éléments effectivement supprimés.



> Il me semblait que les clefs étaient uniques, donc il y
> a-t-il des cas où cette fonction retourne autre chose que 0
> ou 1 ? J'ai regardé quelques docs en ligne qui ne sont pas
> très claires sur ce point.



unordered_map est le nom standard de multimap. Tu peux y
stocker plusieurs éléments avec la même clé.



unordered_map, c'est le nom standard de hash_map. Et tu n'y peux
stocker qu'un élément par clé. La raison que erase renvoie un
entier, ici, c'est par souci d'orthogonalité : dans
unordered_multimap ou multimap, erase peut bien renvoyer
d'autre chose que 0 ou 1. Et en fin de compte, c'est aussi plus
clair que s'il renvoyait bool : avec bool, on ne sait jamais
exactement ce qui est vrai et ce qui est faux. (Une solution
encore meilleur aurait été de renvoyer succeeded ou failed,
valeurs d'un enum standard. Mais je trouve que le compte, c'est
déjà pas si mal. Maintenant, si seulement l'élément avait des
champs nommés key et value...)

--
James Kanze
Adrien
Le #20532071
James Kanze wrote:

unordered_map, c'est le nom standard de hash_map. Et tu n'y peux
stocker qu'un élément par clé. La raison que erase renvoie un
entier, ici, c'est par souci d'orthogonalité : dans
unordered_multimap ou multimap, erase peut bien renvoyer
d'autre chose que 0 ou 1. Et en fin de compte, c'est aussi plus
clair que s'il renvoyait bool : avec bool, on ne sait jamais
exactement ce qui est vrai et ce qui est faux. (Une solution
encore meilleur aurait été de renvoyer succeeded ou failed,
valeurs d'un enum standard. Mais je trouve que le compte, c'est
déjà pas si mal. Maintenant, si seulement l'élément avait des
champs nommés key et value...)




Merci c'était très clair.
Publicité
Poster une réponse
Anonyme