Множества типа Integer

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Angel_19
новенький
Сообщения: 37
Зарегистрирован: 24.06.2014 17:29:47

Множества типа Integer

Сообщение Angel_19 »

Код в Лазарусе:

Код: Выделить всё

Type
    tSet = Set of Integer;


Выдает ошибку, жалуется на тип Integer. Если использовать тип Byte то все в порядке.
Т.е. множества типа Integer в Лазарус не поддерживаются?
Аватара пользователя
runewalsh
энтузиаст
Сообщения: 579
Зарегистрирован: 27.04.2010 00:15:25

Сообщение runewalsh »

Нет. Множества реализованы как битовые поля, так что set of byte требует 256/8 = 32 байта (8 интеджеров, это тебе не это!). В планах по развитию языка вроде есть set of integer, но когда это ещё будет (если вообще будет: в общем случае такое множество потребует 2^32 бит памяти). Используй хэш-таблицы. В зависимости от задачи, если допустимо «нестрогое» множество с ложноположительными срабатываниями операции in, тебе может быть интересен фильтр Блума.
Ответить