Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

A propos de unordered_map

1 view
Skip to first unread message

Adrien

unread,
Nov 10, 2009, 7:23:15 AM11/10/09
to
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.


Michael Doubez

unread,
Nov 10, 2009, 3:04:12 PM11/10/09
to
On 10 nov, 13:23, Adrien <adrien+n...@saladin.fr.invalid> wrote:
> 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.

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

--
Michael

James Kanze

unread,
Nov 10, 2009, 3:31:37 PM11/10/09
to

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

unread,
Nov 10, 2009, 5:53:51 PM11/10/09
to
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.

0 new messages