simple open addressing hashmap, and linked hashmap in C11.
a hashmap and linked hashmap implementation with variable fixed-width key and value that are set at initialization time. this allows a single implementation to be configured as a hashset and linked hashset by using zero length values. the API however still takes a value parameter just the length can be zero. the design adopts an open-addressing hashtable with tombstone bitmaps to eliminate empty or deleted key sentinels.
the implementation does not support any advanced features like custom deleters or multithreading. it is designed to be a simple and fast hash table with minimal dependencies and that will compile in standard C11.
the implementation is derived from cpphashmap which is a fast C++ hashmap, hashset, linked hashmap and linked hash set implementation that supports C++ copy and move constructors, placement new and explicit destructor calls for flexible templated key and value classes.
- requires CMake.
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config RelWithDebInfo
build\RelWithDebInfo\test_hmap.exe