Функции хеширования STL

Доступно ли в STL какие-либо функции Hash, которые публично раскрываются?

Я знаю, что существуют нестандартные реализации, которые используют хэш-значения (такие как boost:: hash_map), а MSVC8 реализует версию hash_map/hash_set/etc.

Но существуют ли Хэш-функции, которые определены в С++ 98 STL?

Если нет, то каковы лучшие источники не-С++ 98 надежной хэш-функции?

Порядок предпочтительных источников (от наиболее приемлемого до наименьшего): Boost, С++ 0x стандартный STL, TR1, другая сторонняя сторона.

Ответы

Ответ 1

:

И все они предназначены для хэшированных ассоциативных контейнеров, а не для криптографии.

Ответ 2

Я думаю, вы ищете хеш-функции для хэш-таблиц, а не для криптографии, правильно?

В этом случае, как насчет boost:: hash?

В документации говорится, что он совместим с хешем TR1, который должен стать частью предстоящего стандарта С++ 0x. Это означает, что он, вероятно, уже найден в довольно многих компиляторах.

Для криптографических хэшей в Boost, похоже, есть реализация SHA-1, но путь, если вам нужен, тяжелый - использовать специальную библиотеку, такую ​​как Crypto ++.

Ответ 3

Выбор функции Хэша в идеале зависит от вашего использования результатов. Я подозреваю, что это частично может быть связано с идеей "один размер не подходит всем".