Библиотека хеш-таблиц C изначально поддерживает несколько значений на ключ - PullRequest
1 голос
/ 08 ноября 2011

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

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

IsКто-нибудь знает о реализации библиотек, которые поддерживают это по умолчанию (и в идеале это также блестящие, быстрые, хеш-таблицы, а также BSD или аналогичным образом лицензированы)?Я просмотрел пару библиотек, но ни одна из них не сделала то, что я хотел, * glib наборы данных , которые были ближе всего, хотя и хранят записи, а не списки.

1 Ответ

1 голос
/ 08 ноября 2011

Итак ... что-то вроде мультикарты ?

Libgee , построение из GLib , обеспечивает MultiMap . (Это написано на языке Вала, но оно преобразуется в простой C).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...