Bonjour tout le monde,
J'ai un ptit morceau de code en C++ assez classique, et je voulais savoir si certains d'entre vous saurez l'écrire en STL. Mon code fonctionne bien mais par curiosité et découverte je voudrais passer par la STL.
Je dispose de deux vecteurs de taille identiques:
L'opération Get_Vector() renvoit un vecteur courant car mon code se fait dans une boucle de parcours de liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 std::vector<std::string>* loc_po_results = Get_Vector(); std::vector<size_t> loc_o_sizes( loc_po_results->size());
while (iterateur_liste != iterateur_fin )
{
std::vector<std::string>* loc_po_results = Get_Vector();
}
Très bien, maintenant je fais l'opération suivante :
Recopier dans le second vecteur la taille max de la chaine contenue dans le premier vecteur, sachant que le premier vecteur change donc a chaque tour de ma liste.
Je fais donc :
Mais je voudrais savoir si il y a un moyen plus elegant de faire ca avec la STL, avec ... un transform, ou un copy ? Un truc du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 while ( loc_o_it_tmp != par_o_result_iterator_end ) { std::vector<std::string>* loc_po_results = (*loc_o_it_tmp).second ; // Le second de l'iterateur est un vecteur dans une map : equivaut au Get_Vector(); for ( unsigned long loc_ul_i = 0U; loc_ul_i < loc_po_results->size() ; loc_ul_i++ ) { loc_o_sizes[loc_ul_i] = std::max( loc_o_sizes[loc_ul_i], loc_po_results->at( loc_ul_i ).size() ) ; } ++loc_o_it_tmp ; }
Sauf que dans mon cas deja la fonction max n'est pas un binary_function, et secondo je ne sais pas quoi mettre en second argument de mon bind2nd car il me faudrait l'element courant du vecteur loc_po_result, et non pas une constante comme on voit dans tous les exemples de la STL (bind2nd( greater<int>, 10 )......).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 std::transform( loc_po_result->begin(), loc_po_result->end(), loc_o_sizes.begin(), std::bind2nd( max()....
Merci pour votre aide, j'espère que cela est possible en STL, sinon tant pis.
A plus.
Alex.
Partager