¿Cómo shu, ffle un std :: vector?

Estoy buscando una forma genérica y reutilizable de barajar unstd::vector en C ++. Así es como lo hago actualmente, pero creo que no es muy eficiente porque necesita una matriz intermedia y necesita saber el tipo de elemento (DeckCard en este ejemplo):

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);
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta