Was ist der Unterschied zwischen shuffle und random_shuffle c ++?
Die Funktionstd :: shuffle wurde in C ++ 11 eingeführt:
template< class RandomIt, class URNG >
void shuffle( RandomIt first, RandomIt last, URNG&& g );
und es hat die gleiche Signatur wie eine der Überladungen vonstd :: random_shuffle was auch in C ++ 11 eingeführt wurde:
template< class RandomIt, class RandomFunc >
void random_shuffle( RandomIt first, RandomIt last, RandomFunc&& r );
Der Unterschied liegt im dritten Parameter, wo:
URNG muss die Anforderungen von UniformRandomNumberGenerator erfüllen
Ist das alles? Ist der Unterschied nur dasshuffle
führt eine zusätzliche Prüfung der Kompilierungszeit durch? Ist das Verhalten ansonsten das gleiche?