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
310 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!

source:php.cn
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