begin process at 2012 05 30 11:46:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

STL : algo. for_each et Objet fonction


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

STL : algo. for_each et Objet fonction

mercredi 22 février 2006 à 10:39:25 | STL : algo. for_each et Objet fonction

fm29

Bonjour,

l'idée est assez simple. Comment puis je récupérer une variable/instance de type vector après l'appel l'algorithm for_each.
Comme dans l'exemple. Je parcours une string. pour chaque car. convertit en entier que je place dans un vector<int>.
Mais après l'appel à for_each comme puis je accéder au vector ?

merci d'avance

Frédéric

class ConvertCharToInt
{
  vector<int> vFmt;
  public:
    void operator() (char c)
    {
         vFmt.push_back(atoi(c));
    }
};

class CFmt
{
  public  :
    string szFmt;
    void GetStringFormat(const string a){ szFmt= a;};
    void SplitFmt(){
      std::for_each(szFmt.begin(),szFmt.end(),ConvertCharToInt());
    };
};
main()
{
 CFmt *obj;
 obj= new CFmt;
 obj->GetStringFormat("123456");
 obj->SplitFmt();
 delete obj;
}


mercredi 22 février 2006 à 13:01:01 | Re : STL : algo. for_each et Objet fonction

Alpacha

Membre Club
Que penses-tu de mettre :
vector<int>& getVector() const {
return vFmt;
}
dans ta class ConverCharToInt
?
mercredi 22 février 2006 à 13:06:17 | Re : STL : algo. for_each et Objet fonction

fm29

Pourquoi pas... mais comment puis je appeller la méthode ?
Car je n'ai pas  d'instance de classe ConvertCharToInt


mercredi 22 février 2006 à 13:11:26 | Re : STL : algo. for_each et Objet fonction

Alpacha

Membre Club
Ah oui je n'avais pas vu.
Hé bien tu peux procéder comme ça :
Tu mets ton vector dans une autre class, disons vFmt.
dans ConvertCharToInt tu demande un char, comme là, mais aussi un vector<int> par référence, pour le remplir avec les int.
Tu créés une instance de vFmt avant le for_each.
Tu passes comme prévu le vector de vFmt à ConvertCharToInt, dans le for_each.
Et après le foreach, ton vector est donc rempli et tu peux y accéder.
mercredi 22 février 2006 à 13:58:37 | Re : STL : algo. for_each et Objet fonction

fm29

marche pas... :)

car comment puis je lui passer le paramètre char ????

class vFmt
{
  public :
   vector<int> vFmt;
};        

class ConvertCharToInt
{
  public:
    void operator() (char c,vector<int>& vFmt)
    {
         vFmt.push_back(atoi(c));
    }
};

class CFmt
{
  public  :
    string szFmt;
    void GetStringFormat(const string a){ szFmt= a;};
    void SplitFmt(){
    vFmt vect;
      std::for_each(szFmt.begin(),szFmt.end(),ConvertCharToInt(vect.vFmt));
    };
};
main()
{
 CFmt *obj;
 obj= new CFmt;
 obj->GetStringFormat("123456");
 obj->SplitFmt();
 delete obj;
}


mercredi 22 février 2006 à 14:33:59 | Re : STL : algo. for_each et Objet fonction

Alpacha

Membre Club
Quelle est l'erreur?
Et en inversant l'ordre des arguments de ConvertCharToInt ?
mercredi 22 février 2006 à 14:50:32 | Re : STL : algo. for_each et Objet fonction

fm29

Même en inversant l'ordre des arguments.. Dans ."void operator() (char c,vector<int>& vFmt) ??"  .--->
void operator() (vector<int>& vFmt,char c) -- Pareil

(S) An expression of type "std::vector<int,std::allocator<int> >" cannot be converted to type "ConvertCharToInt".I)

(I) The call does not match any parameter list for "ConvertCharToInt::ConvertCharToInt".
(I) "implicit ConvertCharToInt::ConvertCharToInt(const ConvertCharToInt &)" is not a viable candidate.
(I) An expression of type "std::vector<int,std::allocator<int> >" cannot be converted to type "const ConvertCharToInt &".

mercredi 22 février 2006 à 14:56:05 | Re : STL : algo. for_each et Objet fonction

Alpacha

Membre Club
Bizarre ... il croit que l'on appelle le constructeur de copie ...
Au pire tu peux spécifier comme ça :
for_each(...,...,ConvertCharToInt::operator(vec.vFmt));
Qui sait? :p
Et est-ce que en mettant le vector dans ConvertCharToInt et en créant une instance de ce dernier, ca arrangerait pas le pb, tout simplement ?
mercredi 22 février 2006 à 15:03:58 | Re : STL : algo. for_each et Objet fonction

fm29

:))

Alors .... first )

(S) The operator symbol is not recognized.

next  )

non plus. ai déjà essayé.



mercredi 22 février 2006 à 15:24:48 | Re : STL : algo. for_each et Objet fonction

Alpacha

Membre Club
Je crosi avoir trouvé ...
class ConvertCharToInt
{
  vector<int> vFmt;
  public:
    void operator() (char c)
    {
         vFmt.push_back(atoi(&c));
    }
    vector<int>& getVector() { return vFmt; }
};

class CFmt
{
  public  :
    string szFmt;
    void GetStringFormat(const string a){ szFmt= a;};
    vector<int>& SplitFmt(){
     
      ConvertCharToInt ccti = std::for_each(szFmt.begin(),szFmt.end(),ConvertCharToInt());
      return ccti.getVector(); 
    }
};
main()
{
 CFmt *obj;
 obj= new CFmt;
 obj->GetStringFormat("123456");
 vector<int> v = obj->SplitFmt();
 delete obj;
}

Reste à voir si atoi() fait bien son boulot, car je préfère les stringstream (<sstream>) ...

1 2 3

Cette discussion est classée dans : for, each, vector, obj, szfmt


Répondre à ce message

Sujets en rapport avec ce message

directives conditionnelles [ par leprov ] salut a tous. je suis face a une erreur qui me semble bizzarre, autant j'ai fait une connerie enorme et je vais m'en rendre compte tt seul mais la ca la fonction for_each [ par marjolaine1 ] Bonjour :j'utilise un vecteur générique "vect",                                       for_each(vect.begin(),vect.end(),fonction);s'il vous plaît pourr For Each ou équivalent? [ par spomky ] Je vous explique mon soucis.j'ai un document XML qui ressemble a ceci: Button1 Salut boucles for... [ par norton ] bonjour,je voudrai pouvoir calculer et voire le nombre de fois que mon programme vérifie le contenu de la boucle (voire si une variable a la valeur de petit probleme de pause [ par sozer2 ] Bonjour je suis débutant en C++ et j'ai un ptit problemeJe souhaite faire une pause sous linux mais la fonction system("pause"); ne marche que sous wi Compil ATL [ par hm1964 ] Je m'arrache les cheveux avec le pblm suivant :je cherche à compiler le programme VMRPip9 (exemple directshow) et j'ai un souci avec le link : il ne t [C++ 7(.NET)]Création d'un vector ou tableau Object [ par sfouilloux ] bjr,comment créer un tableau d'objet ou un vecteur en c++ managé sous VS.NET 2003.Merci BOUCLE for [ par juliansk ] je cherche comment générer une suite logque a 4 termes.ex:2 4 8 16. J'ai imaginé le faire de cette manière: je génère un premier chiffre avec la fonct Segmentation Fault....en traitement d'image [ par psysta ] Bonjour,je suis nouveau dans la programmation en C. J'ai un programme Matlab qui marche bien, et je souhaiterais l'implémenter en C. Le pgm compile bi Problème delete tableau dynamique [ par ttfl ] Bonjour,je suis débutant en c++.Quelqu'un pourrait il me dire pourquoi le programme suivant plante à la dernière instruction (delete [] tableau;) svp


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales