Hashmap

This is a simple hashmap for the C language that can be used to store data which holds a key and a value. It uses the djb2 hash function by Dan Bernstein.


Creating a new hashmap

Creating a new hashmap is really easy. It only requires the starting capacity which will be used for allocating the buckets (how many buckets) and calculating the hash.

hashmap* map = hashmap_create(20); // 20 buckets as the initial buckets

Adding data to a hashmap

With our newly created hashmap we can now give in a key and a value which will be a void pointer. This is due to there being no generic T in C and since a void pointer is able to hold any value we use that as a workaround.

hashmap_put(map, "test", (void*)"Hello world");

Retrieving data from a hashmap

Retrieving data from a hashmap is really easy since you just need to use the key which you assigned the value with.

char* test = (char*)hashmap_get(map, "test");
printf("%s", test); // "Hello world"

Removing data from a hashmap

Since we now know how to add and get data from our hashmap our next step will be removing data from a hashmap. This is just as simple, as getting a value in a hashmap since we just need the given in key.


Freeing the hashmap

Freeing the hashmap is also another important part of the hashmap library. Since it's manually allocated you also need to manually free it.

Last updated