Контейнеры STL хранят копии содержавших объектов. Когда auto_ptr копируется, он устанавливает старый ptr в NULL. Много методов контейнера повреждаются этим поведением.
Уведомление о безопасности : это решение не следует использовать в ситуациях, когда качество случайности может повлиять на безопасность приложения. В частности,
rand ()
иuniqid ()
не являются криптографически безопасными генераторами случайных чисел . См. ответ Скотта для получения безопасной альтернативы.
Если вам не нужно, чтобы он был абсолютно уникальным с течением времени:
md5 (uniqid (rand (), true))
В противном случае (при условии вы уже определили уникальный логин для своего пользователя):
md5(uniqid($your_user_login, true))
например (в псевдокоде)
int myInt = random(0, numcharacters)
char[] codealphabet = 'ABCDEF12345'
char random = codealphabet[i]
repeat until long enough