Перейти к содержанию

подскажите либу для работу с хешами в С


Гость

Рекомендуемые сообщения

А что собственно нужно? Если именно что hash tables, то

GDBM или Berkeley DB. Кроме того, в glibc есть собственные

функции -- но они только in-memory; кроме того, если возможность

работы с несколькими хэш-таблицами -- это GNU extension.

Ссылка на комментарий
Поделиться на другие сайты

нужно быстро отыскивать элемент в списке, есть он там или нет. Сам список в памяти помещяется, как будет с хешем пока не знаю. Что посоветуете? А какие фкнкции в glibc? в GNU extension? где о них прочесть?

Ссылка на комментарий
Поделиться на другие сайты

1) Если сам список помещается в памяти, то и хэш тоже

2) Ну читать-то нужно то что всегда -- например, info libc.

Есть такая функция hsearch -- она стандартна, но позволяет

работать только с одним хэшем на всю программу.

Только в glibc есть функция hsearch_r которая позволяет работать

с несколькими хэшами.

Соответсвенно Berkley DB 1.85 описана в man dbopen и man hash

А GDBM -- в info gdbm

Но! По-моему, если нужно работать только с памятью, то не проще

ли написать все самому? Собственно код хэш-функции можно взять

(чтоб велосипед не изобретать), например из заголовочного файла

hash.h в Objective C Или можно покопать исходники Berkley DB.

Или можно посмотреть в книге "Компиляторы". Или в книге "Искусство программирования" Д. Кнута

Ссылка на комментарий
Поделиться на другие сайты

А не подскажите, что из перечисленого работает быстрее?

Список приблизительно из 50тыс. строк разной длинны (5-100 символов)

Ссылка на комментарий
Поделиться на другие сайты

Гм. Вряд ли это вообще можно сказать заранее. Дело-то в том,

что эффективность хэша зависит не от количества данных, а от

качества. А в среднем все это сопоставимые по скорости решения.

Кстати, если у вас список постоянный, то можно попробовать gperf.

Ссылка на комментарий
Поделиться на другие сайты

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

да вот никак не разберусь, в каком формате ей подсунуть данные, не подскажите?

у меня список:

ключь=значение

ключь=значение

....

нужно соотвественно по ключу получать будет значение или undex

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...