Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
957 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] for_each, mem_fun ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] for_each, mem_fun ...

n°812635
xterminhat​e
Si vis pacem, para bellum.
Posté le 02-08-2004 à 12:10:40  profilanswer
 

Soit couleur un objet tq :
 

Code :
  1. struct couleur {
  2. void serialisation_binaire( ofstream& ) const;
  3. }


 
j'ai un 'vecteur' de type couleur
 

Code :
  1. vector<couleur> vect;


 
Je veux sérialiser tous les éléments de mon vecteur.
 
La solution simple
 

Code :
  1. for( vector<couleur>::const_iterator it( vect.begin() ); it != vect.end(); ++it )
  2. (*it).serialisation_binaire( fichier_destination );


 
Comment faire avec un for_each ? J'ai essayé n'importe koi du genre...
 

Code :
  1. void ( couleur::*f )( ofstream& ) const ( &couleur::serialisation_binaire );
  2. for_each( vect.begin(), vect.end(), bind2nd( mem_fun1_t<void,couleur,ofstream&>( f ), fichier_destination ) ); }


 
Une idée pour faire en sorte que cela fonctionne ?


Message édité par xterminhate le 02-08-2004 à 12:18:45

---------------
Cordialement, Xterm-in'Hate...
mood
Publicité
Posté le 02-08-2004 à 12:10:40  profilanswer
 

n°812644
blackgodde​ss
vive le troll !
Posté le 02-08-2004 à 12:31:18  profilanswer
 

Code :
  1. template<typename T>
  2. class serialize_foreach
  3. {
  4.     ofstream& f;
  5. public:
  6.     serialize_foreach(ofstream& file)
  7.       : f(file)
  8.     {
  9.     }
  10.     void operator () (T &t)
  11.     {
  12.         t.serialisation_binaire(f);
  13.     }
  14. };
  15. for_each(vect.begin(), vect.end(), serialize_foreach<couleur>(fichier_destination));


 
pas testé, mais je verrais bien un truc comme ca.


Message édité par blackgoddess le 02-08-2004 à 12:33:36

---------------
-( BlackGoddess )-
n°812875
xterminhat​e
Si vis pacem, para bellum.
Posté le 02-08-2004 à 17:18:18  profilanswer
 

Je pense que c'est correct. :)
 
Mais d'apres toi, est il possible de se passer d'une fonction objet pour répondre à mon pb (utilisation de mem_fun et Cie) ?


---------------
Cordialement, Xterm-in'Hate...
n°812879
Taz
bisounours-codeur
Posté le 02-08-2004 à 17:20:56  profilanswer
 

bof, ça serait mieux avec for_each et brouette. je vous fais ça se coirs

n°812960
Taz
bisounours-codeur
Posté le 02-08-2004 à 18:22:46  profilanswer
 

Code :
  1. #include <iostream>
  2. struct couleur {
  3.   void serialisation_binaire(std::ostream& os) const
  4.   {
  5.     os << static_cast<const void*>(this) << '\n';
  6.   }
  7. };
  8. #include <vector>
  9. #include <algorithm>
  10. #include <boost/functional.hpp>
  11. int main()
  12. {
  13.   std::vector<couleur> v(10);
  14.   std::for_each(v.begin(), v.end(),
  15.  boost::bind2nd(boost::mem_fun_ref(&couleur::serialisation_binaire), std::cout)
  16.  );
  17. }


 
on a une petite défaillance de la STL (qui est figée), au niveau des référence de référence (essayez avec std:: vous verrez)

n°812966
xterminhat​e
Si vis pacem, para bellum.
Posté le 02-08-2004 à 18:38:04  profilanswer
 

Effectivement avec std:: cela n'est pas possible. Et merci pour l'exemple. :jap:


---------------
Cordialement, Xterm-in'Hate...
n°812968
Taz
bisounours-codeur
Posté le 02-08-2004 à 18:40:31  profilanswer
 

pour la sérialisation utilise les o/istream, sinon le jour ou tu veux écire/lire dans autre chose qu'un fichie sur media, t'es foutu

n°812975
xterminhat​e
Si vis pacem, para bellum.
Posté le 02-08-2004 à 18:51:39  profilanswer
 

Oui bien sur. C'etait un oubli.


---------------
Cordialement, Xterm-in'Hate...

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] for_each, mem_fun ...

 

Sujets relatifs
Problème de joker * et selection for-eachProblème avec for_each
[PHP] Amélioration de script (each() ?) 
Plus de sujets relatifs à : [C++] for_each, mem_fun ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR