Bonjour,
je poursuis mon exploration de parties de la STL que j'avais jusqu'� pr�sent h�las n�glig� : les algorithmes, et notamment, pour le cas qui nous int�resse, std::for_each et std::transform
Je pense avoir correctement saisi leur fonctionnement dans plusieurs cas de figures, mais bien �videmment, je n'y suis pas encore parvenu pour le mien
Je dispose d'une classe qui a, comme variable interne :
Dans une des fonctions membre de cette classe, je souhaite parcourir cette std::map, pour, en fonction d'un param�tre connu de cette seule fonction, y apporter d'�ventuelles modifications. � ce jour, j'ai �a :
Code : S�lectionner tout - Visualiser dans une fen�tre � part std::map<unsigned int, Parcours_Utilisateur> m_m_Etat_Parcours_Utilisateur;
Ce code ne passe pas � la compilation car il semblerait qu'il n'accepte pas un it�rateur sur un std::pair pour l'it�rateur dans lequel il doit �crire les r�sultats. D'o� ma premi�re question : est-ce possible ?
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 bool ConnecteurClientImpl::supprime_Client_Connecte(int i_Identifiant_Client) { std::list<int> l_Temporaire(m_m_Etat_Parcours_Utilisateur.size(), i_Identifiant_Client ); std::transform(m_m_Etat_Parcours_Utilisateur.begin(), m_m_Etat_Parcours_Utilisateur.end(), l_Temporaire.begin(), m_m_Etat_Parcours_Utilisateur.begin(), action_Sur_Suppression_Client()); }
Le second point qui ne me satisfait pas, c'est que afin de pouvoir communiquer � la fonction pass�e en param�tre de l'algorithme le param�tre i_Identifiant_Client, je n'ai pas trouv� mieux que de cr�er une liste et de la passer en tant que second it�rateur de parcours pour le second param�tre de la fonction appel�e. Y avait-il moyen de faire mieux ou plus �l�gants pour que la fonction action_Sur_Suppression_Client() puisse conna�tre i_Identifiant_Client ?
Troisi�me point : cette fonction est aujourd'hui d�finie comme une fonction objet. Pourquoi pas, sauf que j'aurais pr�f�r� en faire une fonction membre de la classe ConnecteurClientImpl. Est-ce possible ?*Toutes mes tentatives ont �t� vaines, mais peut-�tre est-ce d� � mon manque de ma�trise des pointeurs de fonction et approchants �. Je n'y suis parvenu que si la fonction �tait statique, ce que je ne d�sire pas.
Enfin, quatri�me et dernier point : les diff�rences entre for_each et transform ne sont pas toujours �videntes et ce que j'ai pu lire suite � mes recherches est contradictoire : il est affirm� dans une de mes lectures que for_each peut appeler des fonctions � effet de bord, alors que transform ne doit pas.
Dans les cours C++, c'est quasi l'inverse qui y est expliqu� : for_each ne doit en aucun cas modifier le contenu des it�rateurs qu'il parcourt alors que transform, si.
Lequel a raison ? Ou bien c'est moi qui ai mal compris le terme � side effect � du premier article qui est en anglais �
Merci une nouvelle fois � ceux qui pourront m'apporter leurs lumi�re � ma compr�hension incompl�te.
Partager