Именованные требования 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/cpp/named_req/Hash