Хеш-таблица GsvHashTable
Последнее обновление: 8 февраля 2005
Модуль содержит несколько вариантов хеш-таблиц, распределение памяти для элементов таблиц выполняется распределителем GsvTinyAllocator. Размер всех таблиц фиксирован и задается в конструкторе или с помощью свойства 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
delphihashtable.zip - Исходные тексты (4K).