A type-safe implementation of std::vector in plain C. It supports custom constructors/destructors/copy operators to perform complex operations (e.g. vectors of vectors), and serialization/deserialization as well. Its test program is here c_vector_main.c.
A type-safe implementation of std::hashtable (or std::unordered_map) in plain C. It supports custom constructors/destructors/copy operators to perform complex operations. Its test program is here c_hashtable_main.c.
A type-unsafe version of c_vector.h. Its test program is here c_vector_type_unsafe_main.c.
A type-unsafe version of c_hashtable.h. Its test program is here c_hashtable_type_unsafe_main.c.
A deprecated, simpler, type-unsafe implementation of vector and hashtable in plain C. Its test program is here main.c.
Compilation instructions can be found at the t 5881 op of each .c file, but generally they are as simple as something like:
gcc -O2 -no-pie -fno-pie main.c -o main