bonjour
j aimerais savoir comment parcourir un tableau dynamique defini comme suit
comment trouver sa taille a un moment donner ???Code:string *pointeurNom = new string [10];
Version imprimable
bonjour
j aimerais savoir comment parcourir un tableau dynamique defini comme suit
comment trouver sa taille a un moment donner ???Code:string *pointeurNom = new string [10];
Tu doit conserver toi meme le nombre d'elements alloues dans un array dynamique si tu veux l'utiliser plus tart.
il nexiste pas de methode du genre capacity que l on peux lui appliquer
si la reponse est non pouvait on le faire s il etait dynamique
oups je voulais dire pouvais t on le faire s il etais statique
Il n'existe pas de methode "capacity" car un tableau dynamique n'est en fait qu'un pointeur sur le premier élément du tableau.Citation:
il nexiste pas de methode du genre capacity que l on peux lui appliquer
Par contre au lieu d'utiliser des tableaux dynamiques utilise plutot des vecteurs :et tu auras des methodes qui te donneront le nombre d'objets du vecteur et donc tu pourras faire une fonction "capacity" facilement.Code:
1
2 vector<string> pointeurnom; ou vector<string*> pointeurnom;
http://c.developpez.com/faq/cpp/?page=STL#STL_vector
:faq:
Et n'oublie pas de rechercher sur le forum avant de poster :
http://www.developpez.net/forums/viewtopic.php?t=345679
mais moi je veux limiter la taille de mon tableau a 10 element
c est possible de le faire avec un vecteur
ben alors pourquoi t'embetes-tu avec un tableau dynamique ??Citation:
Envoyé par harris_macken
utilise simplement un tableau statique de 10 éléments, même si tu ne le remplis pas completement par la suite. Pour un si petit tableau, ce n'est pas grave :wink:
Oui biensur que tu peux.
Faut juste faire une verif sur la taille du vecteur avant d'ajouter un nouvel élément.
Par exemple tu fais :
Avant chaque ajout dans le vecteur, tu vérifies que tu as encore de la place dans ton vecteur.Code:
1
2
3 vector<string*> vecteur_string; if (vecteur_string.size() < 10) vecteur_string.push_back("un element");
:ouin: j'allais le dire tu m'as devancé hamster :PCitation:
Envoyé par hamster
grillé :mrgreen:
c est tout a fait vrai
merci
:sm:Citation:
Envoyé par niglo
Deux remarques, liées.
- Ca ne compilera pas. Il n'existe rien qui convertisse implicitement un char const[] en std::string*.
- Les chaines C++ ont une sémantique de valeur. C'est fait pour être utilisé. Pas pour être balayé par la réintroduction du pointeur que l'on avait fait exprès de cacher.
=>Sans étoiles. Jamais d'étoile. Si on pense en avoir besoin, il y a de fortes chances que cela soit d'autre chose que l'on ait en fait besoin.Code:std::vector<std::string>
Pour des vecteurs de taille fixe (!= de taille limitée à un max), il peut être intéressant de ne pas utiliser vector qui fait de l'allocation dynamique inutile dans ce cas. boost::array (www.boost.org) propose une classe avec une syntaxe à la vector, mais une taille fixe passée en argument template.