l'initialisation d'un const tableau multidimensionnel en c++
Je suis actuellement en train de travailler à travers quelques exercices en c++ livre, qui utilise du texte de base des jeux comme outil d'enseignement. L'exercice que je suis coincé à l'implique d'obtenir le pc pour sélectionner un mot dans un const tableau de mots (strings), mélange de lettres et de demander au joueur de deviner le mot. C'était facile, mais comme une suite du livre demande d'ajouter l'option de fournir un indice pour le joueur pour les aider à deviner, d'abord comme un réseau parallèle (encore une fois, pas de problème) et puis comme 2 dimensions tableau. C'est là que je suis bloqué. Mon (raccourcie) tableau de mots est comme suit:
const string WORDS[NUM_WORDS] = {"wall", "glasses"};
J'ai besoin de fournir une indication pour chacun de ces mots, mais ne savez pas comment vous y prendre. Ce détachement de téléphone afin de vastes recherches sur google n'est pas une option!
Mon tableau parallèle a été comme suit:
const string HINTS[NUM_WORDS] = "brick...", "worn on head"};
Juste besoin de combiner les deux.
Merci d'avance,
Barry
OriginalL'auteur barry | 2009-11-02
Vous devez vous connecter pour publier un commentaire.
vous pourriez faire de tableau 2d?
ne sais pas si la syntaxe est bonne, mais j'espère que vous obtenez le concept.
c'est un tableau dans un autre tableau.
ÉDITÉ: j'ai enlevé le NUM_WORDS à partir de la première crochet. vous ne pouvez pas déclarer multiples dimensions de tableau de variables.. désolé, j'ai oublié à ce sujet. je viens de tester et cela fonctionne.
OriginalL'auteur user200632
Utiliser une structure de tableau:
Alors vous référer à eux comme:
OriginalL'auteur Graham
hein...
peut-être que vous devriez utiliser paire struct?
maintenant, vous pouvez utiliser des MOTS[i].d'abord, que le mot inconnu
et les MOTS[i].deuxième de son indice.
vous pouvez aussi envisager un vecteur de paires de chaînes de caractères, ce qui peut rendre plus facile de codage et de réduire les bugs. std::vector< std::pair< std::string, std::string > > Notez l'espace entre l' > > à la fin. L'initialisation à l'aide d'une seule instruction ne sera pas possible (à ma connaissance)
ouais, je sais, mais les vecteurs n'ont pas d'initialisation avec {}, seulement par la copie c-tableaux.
Grâce foobs. Je l'ai fait à l'aide de 2 tableaux mais la prochaine partie de la question veut un 2 dimensions tableau.
OriginalL'auteur f0b0s
Voici un exemple simple Qui va vous donner une 2 dimensions, tableau[2][2] dans les deux autres tableaux que vous avez déjà que vous pouvez utiliser comme un point de départ.
Pour quelque raison, peu importe ce que je fais de la boîte ne me laisse pas de copier et de coller le code afin que les formats correctement. désolé.
OriginalL'auteur ChadNC
Si le livre vous dit d'utiliser les 2 tableaux, la meilleure façon de le faire serait un tableau de structures, de sorte que vous pouvez accéder à des mots et des notes par nom plutôt que par un index entier. Une structure ad hoc est également de mieux qu'une paire puisque vous pouvez nommer les membres. Une autre astuce utile en C++ est que le compilateur calculer le nombre d'éléments dans le tableau à l'aide de l'opérateur sizeof. Cela réduit la redondance dans le code ce qui réduit les chances de bugs.
sizeof(string)?!!! sizeof classe != la taille des caractères de la chaîne. sizeof chaîne seront plus ou moins-dépend de la réalisation. mais c'est FAUX! cette sizeof truc sur c-tableaux est seulement bonne pour les POD types.
la première variante est aussi une mauvaise. il suffit de tester. sizeof(string("abcd")) ne sera pas 4 ou 5, il peut, par exemple 32
barry - d'une chaîne ou de tout autre objet prend de X octets de mémoire donc, sizeof(string) retourne X. Dans la version 2, j'ai 6 cordes en matrice2 donc sizeof(tableau2) sera de retour 6*X. Cependant, depuis que je suis feignant le tableau 2D est un tableau 1D de paires de chaînes, j'ai à diviser le nombre d'octets utilisés dans le tableau par 2 pour obtenir le nombre d'entrées dans le tableau. Ainsi NUM_WORDS = ((6*X)/(X))/2.
f0b0s - je ne suis pas concerné par le nombre de caractères dans une chaîne depuis NUM_WORDS ne dépend pas de la longueur d'une chaîne de caractères dans le jeu de données. Je ne se soucient que du nombre d'entrées dans le tableau afin que sizeof(tableau)/sizeof(element) me donne ce dont j'ai besoin.
OriginalL'auteur SigmaXiPi