Jaka jest różnica między shuffle a random_shuffle c ++

Funkcjastd :: shuffle został wprowadzony w C ++ 11:

template< class RandomIt, class URNG >
void shuffle( RandomIt first, RandomIt last, URNG&& g );

i ma taki sam podpis jak jeden z przeciążeństd :: random_shuffle który został również wprowadzony w C ++ 11:

template< class RandomIt, class RandomFunc >
void random_shuffle( RandomIt first, RandomIt last, RandomFunc&& r );

Różnica dotyczy trzeciego parametru, gdzie:

URNG musi spełniać wymagania UniformRandomNumberGenerator

Czy to wszystko? Czy to tylko różnicashuffle wykonuje dodatkowe sprawdzenie czasu kompilacji? Czy zachowanie jest takie samo?

questionAnswers(2)

yourAnswerToTheQuestion