Spec-Zone.ru › Ada 2012
Справочник Ada 2012

A.4.9 Хеширование строк

Статическая семантика

Функция библиотеки Strings.Hash имеет следующее объявление:
with Ada.Containers;
function Ada.Strings.Hash (Key : String) return Containers.Hash_Type;
pragma Pure(Ada.Strings.Hash);
Возвращает определённое реализацией значение, являющееся функцией от значения Key. Если строки A и B равны, то Hash(A) равно Hash(B).
Функция библиотеки Strings.Fixed.Hash имеет следующее объявление:
with Ada.Containers, Ada.Strings.Hash;
function Ada.Strings.Fixed.Hash (Key : String) return Containers.Hash_Type
renames Ada.Strings.Hash;
Обобщённая функция библиотеки Strings.Bounded.Hash имеет следующее объявление:
with Ada.Containers;
generic
with package Bounded is
new Ada.Strings.Bounded.Generic_Bounded_Length (<>);
function Ada.Strings.Bounded.Hash (Key : Bounded.Bounded_String)
return Containers.Hash_Type;
pragma Preelaborate(Ada.Strings.Bounded.Hash);
Эквивалентно Strings.Hash (Bounded.To_String (Key));
Функция библиотеки Strings.Unbounded.Hash имеет следующее объявление:
with Ada.Containers;
function Ada.Strings.Unbounded.Hash (Key : Unbounded_String)
return Containers.Hash_Type;
pragma Preelaborate(Ada.Strings.Unbounded.Hash);
Эквивалентно Strings.Hash (To_String (Key));
Функция библиотеки Strings.Hash_Case_Insensitive имеет следующее объявление:
with Ada.Containers;
function Ada.Strings.Hash_Case_Insensitive (Key : String)
return Containers.Hash_Type;
pragma Pure(Ada.Strings.Hash_Case_Insensitive);
Возвращает определённое реализацией значение, являющееся функцией от значения Key, преобразованного к нижнему регистру. Если строки A и B такие, что Strings.Equal_Case_Insensitive (A, B) (см. A.4.10) истинно, то Hash_Case_Insensitive(A) равно Hash_Case_Insensitive(B).
Функция библиотеки Strings.Fixed.Hash_Case_Insensitive имеет следующее объявление:
with Ada.Containers, Ada.Strings.Hash_Case_Insensitive;
function Ada.Strings.Fixed.Hash_Case_Insensitive (Key : String)
return Containers.Hash_Type renames Ada.Strings.Hash_Case_Insensitive;
Обобщённая функция библиотеки Strings.Bounded.Hash_Case_Insensitive имеет следующее объявление:
with Ada.Containers;
generic
with package Bounded is
new Ada.Strings.Bounded.Generic_Bounded_Length (<>);
function Ada.Strings.Bounded.Hash_Case_Insensitive
(Key : Bounded.Bounded_String) return Containers.Hash_Type;
pragma Preelaborate(Ada.Strings.Bounded.Hash_Case_Insensitive);
Эквивалентно Strings.Hash_Case_Insensitive (Bounded.To_String (Key));
Функция библиотеки Strings.Unbounded.Hash_Case_Insensitive имеет следующее объявление:
with Ada.Containers;
function Ada.Strings.Unbounded.Hash_Case_Insensitive
(Key : Unbounded_String) return Containers.Hash_Type;
pragma Preelaborate(Ada.Strings.Unbounded.Hash_Case_Insensitive);
Эквивалентно Strings.Hash_Case_Insensitive (To_String (Key));

Рекомендации по реализации

Функции хеширования должны быть хорошими функциями хеширования, возвращая широкий спектр значений для различных строковых значений. Вероятность того, что похожие строки вернут одно и то же значение, должна быть низкой.


Spec-Zone.ru

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