Я шукаю загальний, багаторазовий спосіб перетасувати a std::vector
в C ++. Ось як я зараз це роблю, але я думаю, що це не надто ефективно, оскільки йому потрібен проміжний масив і йому потрібно знати тип елемента (DeckCard у цьому прикладі):
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);
}
rand()
, доступні кращі API RNG (Boost.Random або 0x <random>
).