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

  FORUM HardWare.fr
  Programmation
  C++

  [STL] additionner chaque menbre par 2

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[STL] additionner chaque menbre par 2

n°442334
weed
Posté le 27-06-2003 à 22:53:02  profilanswer
 

voilou a tout hasard je vous savoir s'il y avait une fonction qui me permettrait d'incrementer chaque menbre d'une list de float de 0.2.
 
Pour l'instant j'ai parcourus ma list, mais y a peut etre un algo plus performant  
 
j'ai regardé la  
http://www.sgi.com/tech/stl/plus.html
ms y a ecrit :

Citation :

Each element in V3 will be the sum of the corresponding elements in V1 and V2


or moi j'aimerais faire la somme entre une liste float avec un float et non pas entre 2 list...

mood
Publicité
Posté le 27-06-2003 à 22:53:02  profilanswer
 

n°442340
gloop
Posté le 27-06-2003 à 23:00:28  profilanswer
 

t'as deux formes de transform, et si t'avais lu la doc de transform, t'aurais vu qu'il peut être utilisé pour les transformations sur-place.
Dans ton cas
 

Code :
  1. std::transform (lst.begin (), lst.end (), lst.begin (), std::bind2nd (std::plus<float> (), 0.2));

n°442948
LeGreg
Posté le 29-06-2003 à 03:56:02  profilanswer
 

a comparer avec la forme intuitive :
for (it = lst.begin(); it != lst.end(); ++lst) *it += 0.2f;
 
Enfin, si c'est juste pour l'exemple, je dis pas..
 
LeGreg

n°442972
Taz
bisounours-codeur
Posté le 29-06-2003 à 11:00:59  profilanswer
 

si tu veux qu'on complique un peux la sauce, on va voir ce qui est le plus intuitif... :D

n°442973
LeGreg
Posté le 29-06-2003 à 11:04:34  profilanswer
 

++Taz a écrit :

si tu veux qu'on complique un peux la sauce, on va voir ce qui est le plus intuitif... :D


 
la question n'est pas de compliquer pour compliquer.
 
Effectivement on peut apprendre a se servir de transform sur un exemple simple mais ce n'etait pas la question posee il me semble.
 
En plus j'aurais plutot applique for_each moi mais je suis un chieur.
 
LeGreg

n°442975
gloop
Posté le 29-06-2003 à 11:05:57  profilanswer
 

legreg a écrit :


 
la question n'est pas de compliquer pour compliquer.
 
Effectivement on peut apprendre a se servir de transform sur un exemple simple mais ce n'etait pas la question posee il me semble.
 
En plus j'aurais plutot applique for_each moi mais je suis un chieur.
 
LeGreg


for_each ne modifie pas la séquence d'entrée

n°442979
LeGreg
Posté le 29-06-2003 à 11:15:11  profilanswer
 

Faut qu'on m'explique ce qu'affiche ce programme alors:
 

Code :
  1. #include <vector>
  2. #include <iostream>
  3. #include <algorithm>
  4. using namespace std;
  5. struct multbytwo
  6. {
  7.     void operator () (float & f)
  8.     {
  9.         f *= 0.2f;
  10.     }
  11. };
  12. struct print
  13. {
  14.     void operator () (float & f)
  15.     {
  16.         cout << f << endl;
  17.     }
  18. };
  19. int main()
  20. {
  21.    vector <float> toto;
  22.    toto.push_back(2.0f);
  23.    toto.push_back(3.0f);
  24.    toto.push_back(4.0f);
  25.    for_each(toto.begin(), toto.end(), multbytwo());
  26.    for_each(toto.begin(), toto.end(), print());
  27.    return 0;
  28. }


 
LeGreg

n°442983
Taz
bisounours-codeur
Posté le 29-06-2003 à 11:21:32  profilanswer
 

je trouve assez crade l'utilisation de for_each pour des modifications, c'est pour ça que je préfère transform. pour la peine ta version est plus longue...
 
et ton for_each print, il va vite se rhabiller devant
 
copy(v.begin(), v.end(), ostream_iterator<float>(cout, "\n" ));

n°442984
Taz
bisounours-codeur
Posté le 29-06-2003 à 11:25:04  profilanswer
 

enfin ç afait plaisir, y a quelques temps, c'etait assez inimaginable qu'on discute sur des questions d'esthétisme :jap:

n°442986
LeGreg
Posté le 29-06-2003 à 11:29:01  profilanswer
 

gloop a écrit :


for_each ne modifie pas la séquence d'entrée


 
J'ai ete inexact..
 
Il le fait mais si tu violes le template qui se laisse faire puisque de toute facon le C++ n'impose aucune contrainte sur les arguments d'un template.
 
De plus quand l'entree et la sortie sont la meme, autant utiliser la version auto-modifiante, mais c'est presque philosophique tant qu'il n'y a pas de surcout en performance.
 
C'est la raison pour laquelle on a des  
"*=" et des "= . * ."
 
Au moins l'ecriture est plus compacte.
 
LeGreg
 
 

mood
Publicité
Posté le 29-06-2003 à 11:29:01  profilanswer
 

n°442991
gloop
Posté le 29-06-2003 à 11:38:21  profilanswer
 

j'avais pas pensé à cette possibilité de for_each. mais je trouve ca quand meme moins clair  :D
 


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

  [STL] additionner chaque menbre par 2

 

Sujets relatifs
[C++] Probleme de link (STL et solaris)[STL] SGI et leur extension hash_* : coup de gueule et solutions
[STL] class string et comparaison non case-sensitive[STL] list, push_back et ses joyeux amis... Je comprends pas tout
[C/C++] fonction sort() avec STL[mysql] additionner date et time pour obtenir datetime
Utilisation de la STLSondage sur la STL
[c++] Liste Chainée sans STL ?[C++] les iterateurs STL
Plus de sujets relatifs à : [STL] additionner chaque menbre par 2


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)