est la seule différence que l'on peut utiliser comme index? p>
Quel est l'avantage d'utiliser un sur l'autre pour comparer les types? P>
3 Réponses :
de CPPreference : P>
L'expression typeid est une expression forte> lvalue forte> qui fait référence à un objet avec durée de stockage statique, du type polymorphique const std STD :: type_info ou d'un type de type dérivé. P>
La classe type_index est une classe wrapper autour d'un objet STD :: type_info, qui peut être utilisé comme index dans des conteneurs associatifs associatifs et non ordonnés. La relation avec Type_info objet est maintenue via un pointeur, donc type_index est
CopyConstructible et CopyAssignable Strong>. P>. blockQuote>
Merci d'avoir lu ceci, j'espérais plus d'informations sur les cas d'utilisation spécifiques au-delà de choisir STD :: type_index lors de l'indexation. À cet égard, ils semblent actuellement quelque peu interchangeables.
std :: type_info :: hash_code () code> est une fonction de membre qui renvoie un std ::ze_t code>. C'est juste un numéro, vous ne pouvez pas obtenir le nom code> du code> std :: type_info code> de celui-ci. P>
std :: type_index code> est un type compatible avec des conteneurs, qui dispose également d'un membre code> nom code>, en faisant référence à la std :: type_info code> que cela indexe. P>
Comme avec tout hachage, les collisions sont possibles em>: p>
retourne une valeur non spécifiée telle que pour tous les objets Aucune autre garantie n'est donnée: ( ref ) em> < / p>
(cette dernière phrase est particulièrement intéressante.) p>
Laquelle des deux fonctions que vous souhaitez utiliser dépend de ce que vous essayez de faire. Généralement, Je ne peux pas penser à une raison pour laquelle vous auriez besoin d'utiliser
type_info code> se référant au même type, leur hash_code () code> est identique. P>
type_info code> Les objets faisant référence à différents types peuvent avoir le même hash_code code> (bien que la norme recommande que les implémentations évitent cela autant que possible) et hash_code code> pour le même type peut changer entre les invocations du même programme. P>
blockQuote>
type_index () code> est ce que vous cherchez. Il identifie de manière unique un type. Si vous souhaitez une clé pour un conteneur associatif, type_index () code> 'S hasher efficacement est em> hash_code () code>. P>.
hash_code () code> vous sauf si vous êtes pour une raison quelconque d'essayer d'éviter type_index () code> (Ou vous trouvez que vous devez spécifier le hasher vous-même), bien que l'article lié ait un exemple d'une telle mise en œuvre. P>