Реализация хеш-таблицы в C ++ с обработкой коллизий - PullRequest
2 голосов
/ 10 мая 2010

Что такое хорошая библиотека C ++ для хеш-таблиц / хеш-карт, аналогичная той, что предлагает java. Я работал с Google Sparsehash, но он не поддерживает коллизии.

Ответы [ 3 ]

6 голосов
/ 10 мая 2010

Используйте std :: unordered_map (или unordered_multimap), которая, несмотря на свое имя, является хеш-таблицей - она ​​будет частью следующего стандарта C ++ и доступна в большинстве текущих реализаций C ++. Не используйте классы с hash в именах, которые может предоставить ваша реализация - они не являются и не будут стандартными.

2 голосов
/ 10 мая 2010

http://www.sgi.com/tech/stl/hash_multimap.html

или

std::tr1::unordered_multimap

1 голос
/ 10 мая 2010

Помимо упомянутых в других ответах, вы можете попробовать MCT closed_hash_map или linked_hash_map. Он внутренне похож на Google SparseHash, но не ограничивает используемые значения и имеет некоторые другие функциональные преимущества.

Я не уверен, что понимаю, что вы подразумеваете под «отсутствием поддержки столкновений». И Google SparseHash, и аналогично реализованный MCT, конечно же, прекрасно справляются с коллизиями, хотя и не так, как Java HashMap.

.
...