Oui, herb sutter par exemple conseille régulièrement de l'utilser dès que possible, perso ça me hérisse le poil et je ne vois pas ce qu'on gagne réellement à écrire for(auto& c : Paquet) au lieu de for(Carte& c : Paquet) (sauf que c'est plus clair qu'on manipule des Carte dans le deuxième cas)
Non, ça c'est faux les performances sont exactement identique dans ce cas.
Je pense que tu confonds avec qqchose du style :
1 2 3
|
auto lambda = [] (){do_something();};
std::function<void()> f = [] (){do_something();}; |
Dans ce cas, en effet auto est plus performant vu qu'il permet de conserver le vrai type de la lambda, au lieu de devoir copier la lambda dans une std::fonction (donc avec potentiellement un new et un appel à une fonction virtuelle)
Si tu es en C++11, il y a le nouveau header <random> qui permet de faire :
1 2 3 4 5 6 7
|
void Melanger()
{
std::random_device rd;
std::default_random_engine re(rd());
std::shuffle(Paquet.begin(), Paquet.end(), re);
} |
Les résultats sont différents à chaque fois, sans avoir besoin de faire un srand(time(NULL)) au début du programme. Après ça vaut peut être le coup de n'instancier le random_device et le default_random_engine qu'une seule fois plutôt qu'à chaque appel de Mélanger(), je ne sais pas.
Partager