C++ implementation of a fast hash map and hash set using robin hood hashing
The robin-map library is a C++ implementation of a fast hash map and hash set
using open-addressing and linear robin hood hashing with backward shift
deletion to resolve collisions.
Four classes are provided: tsl::robin_map, tsl::robin_set, tsl::robin_pg_map
and tsl::robin_pg_set. The first two are faster and use a power of two growth
policy, the last two use a prime growth policy instead and are able to cope
better with a poor hash function. Use the prime version if there is a chance of
repeating patterns in the lower bits of your hash (e.g. you are storing
pointers with an identity hash function). See GrowthPolicy for details.
A benchmark of tsl::robin_map against other hash maps may be found here. This
page also gives some advices on which hash table structure you should try for
your use case (useful if you are a bit lost with the multiple hash tables
implementations in the tsl namespace).
- Devel package for openSUSE:Factory
-
2
derived packages
- Links to openSUSE:Factory / robin-map
- Download package
-
Checkout Package
osc -A https://api.opensuse.org checkout devel:libraries:c_c++/robin-map && cd $_
- Create Badge
Source Files
Filename | Size | Changed |
---|---|---|
_link | 0000000124 124 Bytes | |
robin-map-1.2.1.tar.gz | 0000069356 67.7 KB | |
robin-map.changes | 0000002963 2.89 KB | |
robin-map.spec | 0000002607 2.55 KB |
Revision 7 (latest revision is 10)
- Update to version 1.2.1: Fix missing project version increment in CMake. - Changes of version 1.2.0: * Fix a rare but critical bug which only occurs when a very long collision chain (> 32 767) occurs due to a poor hash function (gh#Tessil/robin-map#52). * Replace deprecated std::aligned_storage since C++23 by alignas (gh#Tessil/robin-map#61). * Raise DIST_FROM_IDEAL_BUCKET_LIMIT to 8192. * Clear and shrink the moved hash table in the move operator to be coherent with the move constructor. * When using C++17, std::launder the reinterpreted pointer from std::aligned_storage to adapt to the change of object model introduced in P0137R1. Fix potential but very unlikely undefined behaviour. * When exceptions are disabled, only print the error message when defined(TSL_DEBUG) instead of !defined(NDEBUG). * Check that bucket_count doesn't exceed max_bucket_count() after the constructor initialization.
Comments 0