есть ли в C ++ функция, которая вычисляет отпечаток или хэш строки, ширина которой не менее 64 битов?
Я бы хотел заменить unordered_map<string, int>
на unordered_map<long long, int>
.
Учитывая ответы, которые я получаю (спасибо сообществу Stack Overflow ...), метод, который я описываю, не очень известен. Причина, по которой я хочу неупорядоченную карту отпечатков пальцев вместо строк, заключается в пространстве и скорости. Вторая карта не должна хранить строки, и при поиске она не приводит к дополнительным потерям кэша для извлечения этих строк. Единственным недостатком является небольшая вероятность столкновения. Вот почему ключ должен быть 64 бит: вероятность 2 ^ (- 64) в принципе невозможна. Конечно, это основано на хорошей хэш-функции, и это именно то, что ищет мой вопрос.
Еще раз спасибо, переполнение стека.