back_insertor

back_insertor - C++ - Programmation

Marsh Posté le 06-06-2009 à 15:41:58    

pour faire l'algo ci desouss, je ne peux pas utiliser back_insertor + functor éventuellement, j'avoue que je maitrîse par trop cette bête là:

 
Code :
  1. string s1("GUH=10;KI=98;BH=78**************" );
  2. string s2;
  3. string::iterator itE(s1.begin());
  4. string::iterator itB(itE);
  5. int n = s1.find_last_of("=" )+2;
  6. s2.resize(n);
  7. advance(itE,n);
  8. copy(itB,itE,s2.begin());


Message édité par Glock 17Pro le 06-06-2009 à 15:42:37
Reply

Marsh Posté le 06-06-2009 à 15:41:58   

Reply

Marsh Posté le 06-06-2009 à 15:46:16    

c'est quoi le pb ?

Reply

Marsh Posté le 06-06-2009 à 16:02:11    

savoir si cest pas possible de faire ça en une ligne avec un trasnform +back_insertor ou je sais pas quoi

Reply

Marsh Posté le 06-06-2009 à 17:11:33    

qui dit mieux ?

 
Code :
  1. bool isaStar(char c){return c=='*';}
  2. string s2;
  3. copy(s1.begin(),remove_if(s1.begin(),s1.end(),isaStar),std::back_insert_iterator<string>(s2));


Message édité par Glock 17Pro le 06-06-2009 à 17:13:18
Reply

Marsh Posté le 06-06-2009 à 17:24:31    

Sinon mates du coté de boost::string algo
http://www.boost.org/doc/libs/1_39 [...] usage.html
 
genre copy(trim()) etc

Reply

Marsh Posté le 06-06-2009 à 17:36:27    

yes et avec boost lambda c'est encore meilleur plus besoin de isastar un petit  

 

copy(s1.begin(),  remove_if(s1.begin(),s1.end(),_1 =='*' ),  std::back_insert_iterator<string>(s2));

  

et ça roule.1 ligne de code ! C'est vraiment puissant ce bordel


Message édité par Glock 17Pro le 06-06-2009 à 17:37:16
Reply

Marsh Posté le 06-06-2009 à 17:40:22    

Joel F a écrit :

Sinon mates du coté de boost::string algo
http://www.boost.org/doc/libs/1_39 [...] usage.html
 
genre copy(trim()) etc


ok thanks

Reply

Marsh Posté le 07-06-2009 à 15:17:50    

niveau perf la version une ligne est à chier...

Reply

Marsh Posté le 07-06-2009 à 16:18:53    

bah faut faire du in-place je pense. Sinno tu passes ta vie à faire des copies

Reply

Marsh Posté le 07-06-2009 à 17:47:44    

du in-place cad ?

Reply

Marsh Posté le 07-06-2009 à 17:47:44   

Reply

Marsh Posté le 07-06-2009 à 18:01:40    

remove_copy_if que j'avais zappé est un peu plus rapide

Reply

Marsh Posté le 07-06-2009 à 18:09:14    

c'est fou la diférence de perf entre la première version, et le reste


Message édité par Glock 17Pro le 07-06-2009 à 18:09:23
Reply

Sujets relatifs:

Leave a Replay

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