From 20ce6fa81cd9f55dca3212699d5949f8ebe7d95b Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sat, 30 Aug 2025 00:01:15 +0300 Subject: add hashmap example + Doesn't quite work yet because expansion isn't implemented yet --- example_hashmap/old/main.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 example_hashmap/old/main.c (limited to 'example_hashmap/old/main.c') diff --git a/example_hashmap/old/main.c b/example_hashmap/old/main.c new file mode 100644 index 0000000..6c42787 --- /dev/null +++ b/example_hashmap/old/main.c @@ -0,0 +1,40 @@ +#include +#include + +#define MAP_KEY int +#define MAP_TYPE int +#define MAP_HASH(a) CONTS_MAP_NO_HASH(a) +#define MAP_CMP(a, b) ((a) - (b)) +#define MAP_NAME ints +#include + +int main() +{ + /* heuristic, but if we know how many elements we'll need, we should + * give it to the create function. */ + struct ints ints = ints_create(0); + for (int i = 0; i < 1000000; ++i) { + ints_insert(&ints, i, i); + } + assert(ints_len(&ints) == 1000000); + + for (int i = 0; i < 1000000; ++i) { + int *v = ints_find(&ints, i); + assert(v && *v == i); + } + + size_t count = 0; + foreach(ints, iter, &ints) { + assert(iter->key == iter->data); + count++; + } + + assert(count == 1000000); + + for (int i = 0; i < 1000000; ++i) { + ints_remove(&ints, i); + } + + assert(ints_len(&ints) == 0); + ints_destroy(&ints); +} -- cgit v1.2.3