Namespaces
Variants

C++ named requirements: Hash (since C++11)

From cppreference.net
C++ named requirements

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

Требования

Тип T удовлетворяет требованиям Hash если

Дано

  • h , значение типа T или const T , тип аргумента которого — Key ,
  • k , значение типа, приводимого к Key или const Key ,
  • u , lvalue-выражение типа Key .

Следующие выражения должны быть корректными и иметь указанные эффекты.

Выражение Тип возвращаемого значения Требования
h ( k ) std::size_t Возвращаемое значение зависит только от значения k в течение выполнения программы.

Все вычисления h ( k ) в рамках данного выполнения программы дают одинаковый результат для одного и того же значения k .

Вероятность того, что h ( a ) == h ( b ) для a ! = b должна стремиться к 1.0 / std:: numeric_limits < std:: size_t > :: max ( ) .

h ( u ) std::size_t u не модифицируется.

Стандартная библиотека

(C++11)
функциональный объект хеш-функции
(шаблон класса)

Отчеты о дефектах

Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 2291 C++11 одинаковые результаты для одинаковых аргументов требовались во всех случаях требуется только в рамках одного выполнения