Le brassage d'un vecteur est une opération courante dans diverses tâches de programmation. Bien qu'il existe plusieurs façons d'y parvenir, il est crucial d'opter pour une approche générique et efficace qui peut être réutilisée pour différents scénarios.
Dans l'extrait de code fourni, l'approche actuelle consiste à créer un tableau intermédiaire et à connaître le type d’élément, ce qui peut conduire à des inefficacités. Une solution plus efficace et réutilisable est fournie en utilisant C 11 et les versions ultérieures.
Utilisation de C 11 et versions ultérieures
#include <algorithm> #include <random> auto rng = std::default_random_engine {}; std::shuffle(std::begin(cards_), std::end(cards_), rng);
Ce code utilise la fonction std::shuffle , qui nécessite un moteur aléatoire comme troisième argument. Le std::default_random_engine est utilisé pour générer des nombres aléatoires. En utilisant cette fonction, nous pouvons mélanger les éléments en place sans créer de tableaux intermédiaires ni connaître les types d'éléments.
En utilisant C 98
Pour C 98, nous pouvons utiliser le Fonction std::random_shuffle :
#include <algorithm> std::random_shuffle(cards_.begin(), cards_.end());
Semer le hasard Moteur
Pour générer des permutations différentes à chaque fois, nous pouvons amorcer le moteur aléatoire en utilisant std::random_device:
auto rd = std::random_device {}; auto rng = std::default_random_engine { rd() }; std::shuffle(std::begin(cards_), std::end(cards_), rng);
Cette approche garantit que différentes séquences de mélanges sont générées à chaque fois. heure à laquelle le programme est exécuté.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!