Réinitialisation vector [RESOLU]

Réinitialisation vector [RESOLU] - C++ - Programmation

Marsh Posté le 17-03-2007 à 19:47:24    

Bonjour
 
Bien que connaissant assez bien le C, je suis débutant en C++ et j'ai un soucis de débutant avec les vecteurs
 
Mon problème est que je dois remplir un tableau de valeurs récupérées, puis traiter le tableau puis le re remplir de 0 et ce plusieurs fois.
 
J'avais d'abord utilisé un simple tableau de 100 cases => int tab[100] en me disant "de toute façon, pour les tests, je n'aurais jamais plus de 100 valeurs" et j'ai programmé ainsi

int tab[100]
tq besoin
faire
    nb=0
    tq valeur faire
        tab[nb]=valeur
        nb++
    fin faire
    traiter les "nb" valeurs du tableau puis recommencer
fin faire


 
Ensuite, une fois les tests faits, je me suis dit que puisque les vecteurs existaient, autant les utiliser => je m'affranchirais ainsi de ce "100" limité et j'ai donc voulu remplacer par des vecteurs. Le problème, c'est qu'en faisant du push; je ne réinitialisais jamais mon tableau. J'ai donc fait un truc qui ressemble à ceci
 

std::vector <int> tab
tq besoin
faire
    nb=0
    tq valeur faire
        tab.resize(nb + 1)
        tab.at(nb)=valeur
        nb++
    fin faire
    traiter les "nb" valeurs du tableau puis recommencer
fin faire


 
Bon, ça marche mais je sens qu'on devrait pouvoir faire "moins crade". Malheureusement je ne connais pas assez bien les vectors pour trouver mieux.
 
Merci


Message édité par Sve@r le 19-03-2007 à 22:13:55

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 17-03-2007 à 19:47:24   

Reply

Marsh Posté le 17-03-2007 à 19:56:02    

salut !
   Ben, au lieu de faire un resize(nb+1); et un tab.at(nb)=val tu peux tout simplement utiliser la méthode phush_back()  
ainsi tu ferai un tab.push_back(nb); et ça te met ton entier nb a la fin du vector (après l'avoir agrandit)
 
[edit] oops, pardon j'avais mal lut, ce que tu as écrit. Pour réinitialiser ton tableau, tu as juste a appeler la méthode clear() après être sorti de ton deuxième while()

Message cité 1 fois
Message édité par Amonchakai le 17-03-2007 à 19:59:48
Reply

Marsh Posté le 17-03-2007 à 20:14:06    

Amonchakai a écrit :

Pour réinitialiser ton tableau, tu as juste a appeler la méthode clear() après être sorti de ton deuxième while()


 
Ben oui. J'ai pourtant cherché (pas assez apparemment) dans les tutos mais j'avais pas trouvé ce "clear". C'est rageant de ne pas connaître toutes les possibilités des outils de la libC++. Et le man ne peut rien pour moi...
 
Merci.


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 17-03-2007 à 20:17:28    

Le site concernant la STL chez sgi est relativement correct pour servir d'aide mémoire :)

Reply

Marsh Posté le 17-03-2007 à 21:19:05    

IrmatDen a écrit :

Le site concernant la STL chez sgi est relativement correct pour servir d'aide mémoire :)


 
Ah oui, effectivement il a l'air très riche d'enseignements...  :sol:  
Merci :jap:


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed