Хеш-таблица GsvHashTable

Последнее обновление: 8 февраля 2005

Модуль содержит несколько вариантов хеш-таблиц, распределение памяти для элементов таблиц выполняется распределителем LinkGsvTinyAllocator. Размер всех таблиц фиксирован и задается в конструкторе или с помощью свойства Size. Динамическое изменение размеров таблиц не предусматривается.

Базовый класс TGsvHashTableBase

protected function Hash(Key: Pointer): Integer; virtual;
Виртуальная функция для переопредения способа вычисления хеш-функции ключей в наследуемых классах.
protected function IsEqual(Key1, Key2: Pointer): Boolean; virtual;
Виртуальная функция для переопредения способа сравнения значений в наследуемых классах.
public function Add(Key, Data: Pointer): Boolean
Добавление пары ключ-значение в таблицу. Функция возвращает True при успешном добавлении или False, если такой ключ уже имеется в таблице.
public function Find(Key: Pointer): Pointer;
Поиск значения по ключу. Функция возвращает указатель на значение или nil, если ключ не найден.
public procedure ForEach(Iterator: TGsvHashTableIterator);
Итератор позволяет выполнить обход всех элементов, содержащихся в таблице. Для каждого элемента вызывается итераторная функция, которой передается элемент.

TGsvPCharHashTable

В качестве ключа используется указатель на строку (PChar). Предполагается, что значение строки не изменяется за время существования таблицы.

TGsvPWideCharHashTable

В качестве ключа используется указатель на строку (PWideChar). Предполагается, что значение строки не изменяется за время существования таблицы.

TGsvIntHashTable

В качестве ключа используется целое число (Integer).

TGsvStringObjectHashTable

В качестве ключа используется строка (string), копируемая при добавлении пары ключ-значение в таблицу.

TGsvStringHashTable

В качестве ключа используется строка (string), копируемая при добавлении пары ключ-значение в таблицу. Значения представляются отбъектами (TObject), причем таблица владеет объектами и уничтожает их при своем уничтожении.

Download

Downloaddelphihashtable.zip - Исходные тексты (4K).