Cでハッシュテーブル
http://github.com/cubicdaiya/fnv
なんとなくCでハッシュテーブルを実装してみた。使い方はこんな感じ。
/* main.c */ #include <stdio.h> #include "fnv.h" int main (int argc, char *argv[]) { fnv_t tbl[FNV_TBL_CNT]; const char *key = "KEY"; const char *val = "VAL"; fnv_tbl_init(tbl, FNV_TBL_CNT); fnv_put(tbl, key, val, strlen(key), strlen(val)); printf("fnv_get(%s) = %s\n", key, fnv_get(tbl, key, strlen(key))); fnv_tbl_destroy(tbl, FNV_TBL_CNT); return 0; }
キーのハッシュ値が衝突した際にエントリを連結リストでつないでいく部分の実装が微妙に面倒だったけど、それ以外は割とあっさりできた。