【发布时间】:2011-06-01 19:33:16
【问题描述】:
我正在将我在 Python 中使用 epoll 编写的轻量级图像服务器重写为 c(不是 c++)。我想编写一个(或使用现有的)非常简单的映射或哈希表,将整数键(文件描述符)映射到空指针。这样做的好方法是什么?我不需要能够支持任何通用类型的键甚至字符串。我有一个想法:
// Initialize map.
size_t map_size = 50;
void ** map = (void **)malloc(sizeof(void *) * map_size);
memset((void *)map, 0, map_size);
// Set values for keys 3, 20, 67
int key_a = 3;
int key_b = 20;
int key_c = 67;
void * value_a = ...;
void * value_b = ...;
void * value_c = ...;
// NOTE: This does not take into account conflicting keys. I would probably solve
// that using an array or linked-list and comparing keys.
map[key_a % map_size] = value_a;
map[key_b % map_size] = value_b;
map[key_c % map_size] = value_c;
这是明智的还是有更好的方法来实现这一点?或者有人可以指出我找到答案的正确方向吗?
【问题讨论】:
标签: c data-structures map hashtable hashmap