我是C的新手,我有一个需求,我需要根据“电子邮件ID或ipv4 / 6-address”进行快速查找
我的结构看起来像
{
enum_usr_type ;/*(which can be either e-mail type or ip-address type)*/
char_id_data ; /*(which can be either a email-id string OR ipv4/6 ip-address string) */
}
完整数据库的大小预计为1K。
谁能建议我应该怎么做的任何指针(也许是哈希表,但我并不熟悉)。
最佳答案
POSIX哈希表管理
man hsearch
Libhash
ftp://ftp.ugh.net.au/pub/unix/libhash/
Libhash是一个用C编写的小型哈希库
一旦安装
man libhash
我个人更喜欢libhash,它很小,可以很容易地嵌入到代码中,也很容易使用:
hash h;
/* in your case number_of_buckets = 2053, 1k*2 = 2048, the next prime number is 2053. */
hash_initialise(&h, 2053U, NULL, NULL, NULL, free, free)
/* insert */
hash_insert(&h, key, value);
/* retrieve */
hash_retrieve(&h, key, &ptr);
/* dispose hash table */
hash_deinitialise(&h);
再次
man libhash
关于c - 在C中大小为1K的列表上的哈希实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17273460/