Compte tenu du vecteur C ++ comme suit:
weight['A'] = 500.98; weight['P'] = 455.49;
5 Réponses :
Le code est équivalent à: lequel bien sûr ne fonctionne bien que si le vecteur détient au moins 81 éléments. P> P>
On dirait que cela tient 128 afin que nous devrions aller bien.
Vous ne devriez pas.
Utilisez par exemple p> Vous pouvez également itérer sur la carte code> en utilisant par exemple p> std :: map code> à cet effet
std :: map
@Prason, d'accord, je vais le changer
Un caractère est un type entier, il est donc un index valide dans une matrice (ou un vecteur). En passant d'un vecteur à la carte, vous modifiez l'accès Charastics de O (1) à O (journal (n)) pas un bon commerce.
@Martin: Je n'ai jamais dit que ce n'était pas un index valide. Je viens de dire qu'il / elle ne devrait pas l'utiliser parce que cela serait effectivement plus déroutant. Utilisation d'un std :: map code> est plus propre.
Vous modifiez l'accès Charastics de O (1) à O (journal (n)) n'est pas un bon commerce code>. Cela aurait un impact significatif si n est une très grande valeur. Pour une petite valeur de
n code> et en regardant la syntaxe de nettoyage de
std :: map code> Je le recommanderais. Ce n'était pas du tout une bonne raison de descendre. Vous devriez descendre lorsque la réponse est complètement fausse ou trompeuse.
@Prason Saurav: Je considère que la réponse ne va pas. Et je suis en désaccord que l'utilisation de std :: map est plus propre pour moi semble compliquer les choses (et compliquer un concept simple est un mauvais commerce). Mais merci sur le tutoriel sur la façon dont et pourquoi voter.
@Martin York: Tu me fais rire. Qu'est-ce que votre définition de faux code> dise?
Mais merci sur le didacticiel sur la façon dont et pourquoi voter code>. Mon plaisir.
@Prason Saurav: faux: Google.com/... (comme dans pas correctement). Vous n'avez pas répondu à la question posée et vous avez ensuite procédé à fournir quelque chose de complètement inutilisé et sans équivoque. C'est une opinion et à long terme, nous ne pouvons voir que ce que la communauté pense revenir dans une journée et voir quel est le score.
@Martin: La communauté est donc avec vous. Gloire! :) btw aucune infraction signifiait :)
J'avais tendance à accepter que si l'intention est de carte i> caractères à double, une carte d'une certaine sorte aurait plus de sens. (Bien que je suggère un unomment_map code> à la place, si le mappage est incomplet mais plutôt dense.) Un
vecteur code> fait un peu de sens, mais plus comme une optimisation de la performance que Bien que les choses devraient être faites en général.
Les littéraux de caractère (comme 'A' et 'p') peuvent être automatiquement convertis en entiers en utilisant leurs valeurs ASCII. Donc 'A' est 65, 'B' est 66, etc.
Donc, votre code est identique à: p> La raison que vous voudrez jamais faire C'est si le matrice de poids a quelque chose à voir avec des personnages. Si tel est le cas, l'affectation des poids à un littéral de caractère rend le code plus lisible que d'affecter à un entier. Mais c'est juste pour "documentation", le compilateur le voit comme des entiers de toute façon. P> p>
D'accord, je vois que ces littéraux de caractère peuvent être convertis en int.
Pour compter le nombre de particuliers des caractères ASCII (par exemple avant de calculer un arborescence de codage Huffman), il est correct, cependant modifier le jeu de caractères pour contenir plus que l'ASCII inférieur invaliderait ce schéma.
Si vous le souhaitez, vous pouvez utiliser un std :: map
std :: vecteur
Je comprends donc que les littéraux de caractère sont transformés en entiers. La table ASCII étendue-t-elle C ++?
Par exemple, si j'avais un qu'est-ce qui se passerait ???
par exemple. p> par conséquent p>
Essayez :) Char * blah = 'z'; Comme vous mélangez un char ('Z') et un char * (bla). Si vous utilisez CHAR BLAH: cela dépend si un "char" est un "caractère signé" ou "caractère non signé" pour votre compilateur. Pour les miens, il est signé et au-dessus des résultats mathématiques de -12.