11
votes

Besoin d'exemples sur l'utilisation vectorielle C ++

Compte tenu du vecteur C ++ comme suit:

weight['A'] = 500.98;
weight['P'] = 455.49;


0 commentaires

5 Réponses :


5
votes

Le code est équivalent à: xxx

lequel bien sûr ne fonctionne bien que si le vecteur détient au moins 81 éléments.


1 commentaires

On dirait que cela tient 128 afin que nous devrions aller bien.



1
votes

Vous ne devriez pas. Utilisez std :: map à cet effet

par exemple xxx

Vous pouvez également itérer sur la carte en utilisant std :: map :: iterator

par exemple xxx


8 commentaires

@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 est plus propre. Vous modifiez l'accès Charastics de O (1) à O (journal (n)) n'est pas un bon commerce . Cela aurait un impact significatif si n est une très grande valeur. Pour une petite valeur de n et en regardant la syntaxe de nettoyage de std :: map 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 dise? Mais merci sur le didacticiel sur la façon dont et pourquoi voter . 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 caractères à double, une carte d'une certaine sorte aurait plus de sens. (Bien que je suggère un unomment_map à la place, si le mappage est incomplet mais plutôt dense.) Un vecteur 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.



7
votes

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 à: xxx

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.


2 commentaires

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.



0
votes

Si vous le souhaitez, vous pouvez utiliser un std :: map . Techniquement, il serait également possible d'utiliser un std :: vecteur , mais il y aurait toutes sortes de conversions intégrées des caractères en entiers et que le programme serait simplement déroutant.


0 commentaires

1
votes

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 xxx

qu'est-ce qui se passerait ??? par exemple. xxx

par conséquent xxx


1 commentaires

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.