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

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

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

Функция библиотеки Strings.Hash имеет следующее объявление:
with Ada.Containers;
function Ada.Strings.Hash (Key : String) return Containers.Hash_Type;
pragma Pure(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;
pragma Pure(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(Hash);
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(Hash);
Strings.Unbounded.Hash эквивалентна вызову функции Strings.Hash (To_String (Key));

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

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


Spec-Zone.ru

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