Maison > développement back-end > C++ > Comment puis-je mélanger des vecteurs de manière efficace et réutilisable en C ?

Comment puis-je mélanger des vecteurs de manière efficace et réutilisable en C ?

Patricia Arquette
Libérer: 2024-12-22 07:35:09
original
442 Les gens l'ont consulté

How Can I Efficiently and Reusably Shuffle Vectors in C  ?

Réarrangement de vecteurs efficace et réutilisable en C

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);
Copier après la connexion

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());
Copier après la connexion

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);
Copier après la connexion

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!

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