Bonjour,
Donc voila, j'ai 4 valeurs: Valeur 1, Valeur 2, Valeur 3, Valeur 4. Je cherche une méthode pour trouver la plus petite valeur entre les 4.
Valeur= min(valeur1 ,Valeur2, Valeur3, Valeur4) ??
Je vous remercie pour votre aide.
Version imprimable
Bonjour,
Donc voila, j'ai 4 valeurs: Valeur 1, Valeur 2, Valeur 3, Valeur 4. Je cherche une méthode pour trouver la plus petite valeur entre les 4.
Valeur= min(valeur1 ,Valeur2, Valeur3, Valeur4) ??
Je vous remercie pour votre aide.
Il y a une subtilité.
Veux-tu l'itérateur vers ton élément ou simplement (une copie de) sa valeur?
Depuis C++11, tu peux écrire std::min( { valeur1, valeur2, valeur3, valeur4}).
Regarde la documentation de min
Je veux juste une copie de sa valeur. Valeur 1, valeur 2, valeur 3, valeur 4 sont des string. J'ai utilisé la fonction atof pour les transformer en double.
Sa ne fonctionne pas. J'ai comme erreur:Code:double valeur= min({atof(valeurUltimate_Head_1.c_str()),atof(valeurUltimate_Tail_1.c_str()),atof(valeurUltimate_Head_2.c_str()),atof(valeurUltimate_Tail_2.c_str())})
- In function 'in main(int, char**)':
- warnin: extended initializer lists only available with -std=c++ or -std=gnu++Ox
- error: deducing from brace-enclosed initializer list requires #include <initializer_list>
A priori, il y a un défaut dans cette histoire, je ne crois pas que la logique qui cherche le minimum doit s'occuper de transformer les strings en doubles.
De plus, pour convertir vers des double, ce n'est pas atof mais atod, et mieux, boost::lexical_cast<double>(string).
Quoi qu'il en soit, les problèmes peuvent en engendrer d'autres, et je pense qu'ici c'est le cas.
J'ai l'impression que ton gcc est antique, puisqu'il en est encore à suggérer gnu++0x
Essaie d'en utiliser une version plus récente (la 6 par exemple).
A défaut, active l'option --std==c++0x ou --std==c++11
Je te remercie bacelar, j'avais pas vu ta réponse. Sa marche parfaitement.