problème avec les std iterator

problème avec les std iterator - C++ - Programmation

Marsh Posté le 07-01-2008 à 12:10:34    

Bonjour :)
voici mon problème,
j'utilise les iterator afin de parcourir un vecteur de structure, j'aimerais bien mettre à jour la valeur d'un élément bien précis de ce vecteur et j'arrive pas à le faire,
voici mon code
 

Code :
  1. #include <memory.h>
  2. #include <stdio.h>
  3. #include <time.h>
  4. #include <iostream>
  5. #include <fstream>
  6. #include <errno.h>
  7. #include <math.h>
  8. #include <iostream>
  9. #include <fstream>
  10. #include <sstream>
  11. #include <vector>
  12. using namespace std;
  13. typedef struct{
  14. int val1;
  15. int val2;
  16. } val;
  17. int main(){
  18. val item;
  19. std::vector<val> itemv;
  20. item.val1 = 1;
  21. item.val2 = 1;
  22. itemv.push_back(item);
  23. item.val1 = 2;
  24. item.val2 = 2;
  25. itemv.push_back(item);
  26. item.val1 = 3;
  27. item.val2 = 3;
  28. itemv.push_back(item);
  29. item.val1 = 4;
  30. item.val2 = 4;
  31. itemv.push_back(item);
  32. item.val1 = 5;
  33. item.val2 = 5;
  34. itemv.push_back(item);
  35. item.val1 = 6;
  36. item.val2 = 6;
  37. itemv.push_back(item);
  38. item.val1 = 7;
  39. item.val2 = 7;
  40. itemv.push_back(item);
  41. item.val1 = 8;
  42. item.val2 = 8;
  43. itemv.push_back(item);
  44. for(vector<val>::iterator it = itemv.begin(); it!= itemv.end(); ++it){
  45.  if((*it).val1 == 5)
  46.   // je voudrais ici mettre à jour la valeur de val2 à 25 mais j'ai pas réussit à le faire, j'ai fait (*it).val2 == 25, mais à l'afffichage rien ne change
  47. }
  48. for(vector<val>::iterator it = itemv.begin(); it!= itemv.end(); ++it){
  49.  cout << "value1 " << (*it).val1 << " value2 "<< (*it).val2 << endl;
  50. }
  51. }


 
Merci d'avance

Reply

Marsh Posté le 07-01-2008 à 12:10:34   

Reply

Marsh Posté le 07-01-2008 à 13:11:28    

si tu mettais 1 seul "=" lors de ton affectation ?


Message édité par capitaineigloo le 07-01-2008 à 14:17:55
Reply

Marsh Posté le 07-01-2008 à 13:57:15    

Oh merci .... j'ai pas fais attention ;)

Reply

Marsh Posté le 07-01-2008 à 14:53:52    

1) it->val1 = it->val1 + 1;
2) vire tous ces include. vector, ostream, iostream suffisent.
3) vire ton typdef. struct val {...}; suffit..

Reply

Marsh Posté le 07-01-2008 à 20:24:45    

vire aussi le std:: devant le vector, tu inclus deja l'espace de nommage std dans l'espace gobal!


---------------
--- WinSplit Revolution ---
Reply

Marsh Posté le 08-01-2008 à 21:44:28    

sinon tu enlèves les 59 premières lignes et tu ne le compiles pas.

Reply

Sujets relatifs:

Leave a Replay

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