Maison > développement back-end > C++ > Comment puis-je mélanger efficacement un std::vector en C ?

Comment puis-je mélanger efficacement un std::vector en C ?

Barbara Streisand
Libérer: 2024-12-30 19:23:14
original
353 Les gens l'ont consulté

How Can I Efficiently Shuffle a std::vector in C  ?

Mélange efficace d'un std::vecteur

Lors du mélange d'un std::vecteur, l'efficacité joue un rôle crucial. La méthode fournie utilisant un tableau intermédiaire et des connaissances spécifiques au type n'est pas optimale.

Approche C moderne

En C 11 et versions ultérieures, une approche plus efficace est disponible :

#include <algorithm>
#include <random>

auto rng = std::default_random_engine {};
std::shuffle(std::begin(cards_), std::end(cards_), rng);
Copier après la connexion

Cette méthode utilise la fonction std::shuffle, qui randomise efficacement les éléments. N'oubliez pas de réutiliser l'instance rng sur plusieurs appels std::shuffle pour une randomisation cohérente.

Shuffling personnalisé

Si vous désirez des séquences aléatoires distinctes à travers les exécutions du programme, amorcez l'instance aléatoire moteur avec la sortie de std::random_device:

auto rd = std::random_device {};
auto rng = std::default_random_engine { rd() };
std::shuffle(std::begin(cards_), std::end(cards_), rng);
Copier après la connexion

C 98 Approche

Pour C 98, la fonction std::random_shuffle reste applicable :

#include <algorithm>

std::random_shuffle(cards_.begin(), cards_.end());
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal