Требования к именованным типам C++: Hash (с C++11)
Hash — это объект-функция, результат которой зависит только от входных данных и с очень низкой вероятностью даёт одинаковый результат для разных входных значений.
Требования
Тип T удовлетворяет требованию Hash, если
- Тип
Tудовлетворяет требованиям FunctionObject, CopyConstructible, Destructible, и
Даны
-
h, значение типаTилиconst T, аргумент которого — типKey, -
k, значение типа, преобразуемого вKeyилиconst Key, -
u, lvalue выражение типаKey.
Следующие выражения должны быть допустимы и иметь указанные эффекты.
| Выражение | Тип результата | Требования |
|---|---|---|
h(k) |
std::size_t | Возвращаемое значение зависит только от значения k в течение всего времени работы программы. Все вычисления Вероятность |
h(u) |
std::size_t |
u не изменяется. |
Стандартная библиотека
|
(C++11) | объект-функция хеширования (шаблон класса) |
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применено к | Описанное поведение | Корректное поведение |
|---|---|---|---|
| LWG 2291 | C++11 | требовалось одинаковое поведение для одинаковых аргументов во всех случаях | требуется только в рамках одной сессии выполнения |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/Hash