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/cpp/named_req/Hash

Spec-Zone.ru

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