uthash C HASH_FIND



我有一个大学作业,应该使用库uthash来实现一个哈希表,包括set-, get-和delete-函数。哈希表是我们的结构体,它包含一个键、它的长度、一个值、它的长度和一个UT_hash_handle(这似乎是必要的)。

结构体是这样的:

typedef struct hashtable {
unsigned char *key;
size_t k_len; 
unsigned char *value; 
size_t v_len;
UT_hash_handle hashhandle;
} hashtable;

我们预定义的function-head如下:

hashtable get_value(hashtable **ht, const unsigned char *key, size_t key_len);

关于我们的任务,我应该使用来自uthash的HASH_FIND-函数来按键获取哈希值。我认为这很容易(可能是),但遗憾的是,我不了解HASH_FIND-功能的使用细节和官方文档不是很有帮助,因为它只是显示了HASH_FIND_INT的使用。

那么,HASH_FIND希望我给它五个参数:

HASH_FIND(hh, head, keyptr, keylen, out)

我应该为keyptrkeylen使用的值没有问题(我只是给它参数keykey_len,我在函数中作为参数接收)。对于值,我认为我应该从我们的哈希表结构中创建一个新的struct,并将其交给HASH_FIND。对于head参数,我认为只需要给出指向我的哈希表的指针(根据我们的规范,我将其作为函数的参数)。但是hash_handle到底是什么意思呢?我是否应该从预定义的结构中获取hash_handle-value,然后将其交给HASH_FIND?

谢谢你的帮助!

我想从uthash中使用HASH_FIND从哈希表中查找一个值。

hh意味着是值结构的UT_hash_handle成员的名称(在方便的宏中,如HASH_FIND_INT被硬编码为hh),所以这里只是hashhandle

参数out应该是一个hashtable *,它将被设置为指向找到的元素,如果没有找到则指向NULL

相关内容

  • 没有找到相关文章