Implemented hashmap deletion with tombstones

This commit is contained in:
cannoli-fruit 2026-07-15 13:59:45 -04:00
commit f22c7c1a73
3 changed files with 169 additions and 36 deletions

29
examples/hm_del.c Normal file
View file

@ -0,0 +1,29 @@
#include <stdio.h>
#define LAZY_IMPL
#include "../lazy.h"
void print_hm_idx(void *hm, size_t k) {
typedef Lz_HM(size_t, size_t) HM;
HM map = *(HM*)hm;
if (lz_hm_exists(map,k)) {
printf("hm[%zu] = %zu\n", k, lz_hm_get(map,k));
} else {
printf("hm[%zu] = <N/A>\n", k);
}
}
int main() {
Lz_HM(size_t, size_t) hm;
lz_hm_init(hm);
for (size_t i = 0; i < 16; ++i) {
lz_hm_add(hm, i, 2*i);
}
for (size_t i = 4; i < 12; ++i) {
lz_hm_remove(hm, i);
}
for (size_t i = 0; i < 16; ++i) {
print_hm_idx(&hm, i);
}
}

View file

@ -5,11 +5,12 @@
int main() {
Lz_HM(size_t,size_t) hm;
lz_hm_init(hm);
for (size_t i = 0; i < 384; ++i) {
size_t cnt = 384;
for (size_t i = 0; i < cnt; ++i) {
lz_hm_add(hm, i, 2*i);
}
for (size_t i = 0; i < 384; ++i) {
printf("hm[%zu] = %zu\n", i, lz_hm_get(hm,i));
for (size_t i = 0; i < cnt; ++i) {
printf("hm[%zu] = %zu\n", i, lz_hm_get(hm, i));
}
}