[C++] petite question sur les std::vectors

petite question sur les std::vectors [C++] - C++ - Programmation

Marsh Posté le 12-09-2008 à 15:58:25    

Bonjour,
 
je souhaite avoir deux tables, une de noms et une de boolean (unsigned short), qui soient liées.
Par exemple
 

Code :
  1. vector<string> string_table;
  2. vector<unsigned short> boolean_table;
  3. string_table.push_back("toto" );
  4. boolean_table.push_back (0);
  5. string_table.push_back("tata" );
  6. boolean_table.push_back (1);


puis-je ensuite parcourir les deux tables de cette manière ? :

Code :
  1. for (unsigned int i = 0; i < string_table.size(); i ++)
  2.    if (boolean_table.at(i))
  3.        cout<<string_table.at(i) << "\n";


 
Merci d'avance :)

Reply

Marsh Posté le 12-09-2008 à 15:58:25   

Reply

Marsh Posté le 12-09-2008 à 16:24:31    

Tu devrais utiliser une hash map si chaque string correspond à un booléen.
Il existe un type bool en c++
\n s'écrit std::endl en c++
Il existe des itérateurs pour parcourir les containers de la stl.
il me semble que la methode size() recalcule à chaque fois la taille donc tu as du calcul inutile à chaque itération de boucle (à vérifier).
Sinon oui à vu de nez ça pourrait quand même marcher comme ça.


---------------
deluser --remove-home ptitchep
Reply

Marsh Posté le 12-09-2008 à 17:02:28    

qu'est-ce que tu veux faire ? la question qui t'a amené a cette solution ?


Message édité par bjone le 12-09-2008 à 17:02:39
Reply

Marsh Posté le 12-09-2008 à 17:04:42    

Bonjour,
 
pour bool et \n c'est accessoire ;)
 
Pour ma question, je veux être sûr que les deux éléments renvoyés par at avec le même index soient toujours cohérents, en gros, suis-je assuré que l'élément que j'ai rajouté en premier dans les deux tables sera toujours retourné par at(0) ?
Parce que si dans une table il devient à la "position 1" (renvoyé par at(1)) tandis que dans la seconde il reste en "position 0", ça ne fonctionnera plus !
 
Merci :)

Reply

Marsh Posté le 12-09-2008 à 17:10:04    

oui mais c'est a toi de faire les même opérations pour les deux vecteurs.
 
pour bool ce n'est pas accessoire, vu qu'il peut exister un vector<bool> optimisé dans l'implémentation de la stl que tu utilise.
 
maintenant, je répépète la question: qu'est-ce que tu veux faire ?

Reply

Marsh Posté le 12-09-2008 à 17:11:41    

std::vector< std::pair< std::string, bool > >
 

Reply

Marsh Posté le 12-09-2008 à 17:29:42    

Ah ok pour bool, c'est noté.
Je vais utiliser vector < pair <> > comme suggéré par KangOl, merci :)
Ce que je veux faire, c'est décider dans ma function qui fait les ajoute les éléments au(x) tableau(x) si l'élément string sera ou non affiché par la fonction suivante.

Reply

Sujets relatifs:

Leave a Replay

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