Je cherche un moyen générique et réutilisable de mélanger une std::vector
en C++. C'est ainsi que je le fais actuellement, mais je pense que ce n'est pas très efficace car il faut un tableau intermédiaire et il faut connaître le type d'élément (DeckCard dans cet exemple) :
srand(time(NULL));
cards_.clear();
while (temp.size() > 0) {
int idx = rand() % temp.size();
DeckCard* card = temp[idx];
cards_.push_back(card);
temp.erase(temp.begin() + idx);
}
0 votes
Non. cherchez fisher-yates....
5 votes
Essayez de ne pas utiliser
rand()
il existe de meilleures API de RNG (Boost.Random ou 0x<random>
).0 votes
Relié : stackoverflow.com/questions/147391/