Spec-Zone.ru › C++

Требования к именованным типам 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(k) в рамках одной сессии работы программы дают один и тот же результат для одного и того же значения k.

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

h(u) std::size_t u не изменяется.

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

hash
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API