Je lis, je lis la bibliothèque standard C ++: un didacticiel et un livre de référence. Exemple de carte: L'auteur dit: p> Ici, l'index est utilisé comme clé et peut avoir n'importe quel type. Ceci est l'interface d'un tableau associatif. Un tableau associatif est un tableau dans lequel l'indice peut être d'un type Quelqu'un peut m'expliquer, quel type fort> de type arbitraire fort> dans une matrice associative? p> p>
3 Réponses :
Les matrices sont généralement indexées par la position des éléments. Un tableau simple - Le conteneur associatif signifie que l'index peut être, bien, un type arbitraire (pas nécessairement non signé) (dans ce cas, un int x [10] code>, a ses éléments
x [0] ... x [9] code>. L'index est une valeur intégrale non signée. P>
std :: string code>). P>
La distinction est entre les vecteurs / tableaux, que la plupart des gens appellent les conteneurs de séquence em>, mais qui peuvent être considérés comme les conteneurs associatifs em> avec les clés étant une gamme complète de nombres entiers de 0 à n. p>
D'autre part, les cartes ne placent pas une telle restriction sur les touches, elles peuvent être des chaînes, des entiers, tout type que vous souhaitez (à condition bien sûr qu'il existe un opérateur de comparaison sensible à l'égalité sur ce type). p>
Eh bien, je ne considérerais pas les tableaux en tant que conteneurs associatifs indexés par des entiers: mappe [0] code> et
et
code> allouer deux objets, alors que c'est un comportement non défini à utiliser
Vector [n] code> si
n> vecteur.size.size () code>.
La sémantique de création automatique de la carte :: opérateur [] en C ++ a rien i> à faire avec la classification théorique des conteneurs de mon humble avis ...
Mon point (que vous partagez en disant "plage complète") est que vous ne pouvez pas utiliser une clé arbitraire B> avec un vecteur, seulement une séquence i>, donc je ne le considérerai pas comme un conteneur associatif.
Il associe des entiers à partir de cette plage avec des valeurs, vous pouvez donc le considérer comme un conteneur associatif IMHO. Je ne vois pas bien comment les entiers hors de portée entrent dans ce débat. Peut-être que nous devrons simplement accepter de ne pas être d'accord.
En effet, ma vision sur des conteneurs associatifs est sans contraintes sur les clés, mais je suis d'accord c'est juste mon opinion personnelle, merci de me laisser comprendre cela ;-)
Cela signifie que vous pouvez créer une carte qui correspond à un type de clé arbitraire au type de valeur arbitraire. P>
Vous pouvez créer des cartes que map Vous pouvez même créer un std :: chaîne code> s sur
float code> s,
court code> s sur
yourclass code> ES ou
YouotherClass code> à
totanotherclass code>. p>
std :: map
Cela signifie n'importe quel i>. Vous pouvez créer un
std :: map code> qui utilise
int code> comme clé,
std :: string code> (comme dans votre exemple), ou même des instances de Des classes.
De Dictionary.com
arbitraire: non attribué une valeur spécifique code>, fondamentalement, l'index peut être n'importe quoi; une corde, un entier, un objet ...
Je suppose / attendre / espérons que Josuttis a continué à expliquer les exigences imposées à ce type "arbitraire" b>?