uthash ╰+攻爆jí腚メ 2023-01-17 09:17 65阅读 0赞 uthash是C的比较优秀的开源代码,它实现了常见的hash操作函数,例如查找、插入、删除等待。该套开源代码采用宏的方式实现hash函数的相关功能,支持C语言的任意数据结构最为key值,甚至可以采用多个值作为key,无论是自定义的struct还是基本数据类型,需要注意的是不同类型的key其操作接口方式略有不通。 官方GitHub地址是: [https://github.com/troydhanson/uthash][https_github.com_troydhanson_uthash] uthash的英文使用文档介绍可从下面网址获得: [http://troydhanson.github.io/uthash/][http_troydhanson.github.io_uthash] [http://troydhanson.github.io/uthash/userguide.html][http_troydhanson.github.io_uthash_userguide.html] 使用时,直接下载源码,直接将头文件uthash.h加到工程中,就可以使用了。 在这开源代码中还有utlist、utarray、utringbuffer、utstack、utstring等,后面用到再介绍 定义: #include "uthash.h" struct my_struct { int id; /* id是键值 */ char name[10]; UT_hash_handle hh; /* 使这个结构体变成hash */ }; 增加操作: struct my_struct *users = NULL; void add_user(struct my_struct *s) { HASH_ADD_INT( users, id, s ); //添加以结构体id成员为键值的结点s到users中 } 注意: HASH\_ADD\_INT的第一个参数为哈希表的指针,第二个参数为键值的变量名称,第三个参数为要添加的节点的指针。 查找操作 struct my_struct *find_user(int user_id) { struct my_struct *s; //从以users作为头的hash表中查找键值为user_id的结点,并令s指向这个结点,注意第二个参数是地址 //如果没有找到s为NULL HASH_FIND_INT( users, &user_id, s ); return s; } 注意: HASH\_FIND\_INT的第一个参数为哈希表的指针,第二个参数为要查找的节点的key值的地址(注意是地址,不是值),第三个参数为寻找key之后,指针的指向,如果没找到为null,找到了就令该指针指向那个节点。 删除操作 void delete_user(struct my_struct *user) { HASH_DEL( users, user); //从以users作为头的hash表中删除user结点 } 一个更详细的操作: 插入时,先查找,当键不在当前的hash表中时再进行插入,以确保键的唯一性; void add_user(int user_id, char *name) { struct my_struct *s; HASH_FIND_INT(g_users, &user_id, s); //查找键值为user_id的结点,令s指向该节点 if(NULL == s) //没找到 { s = malloc(sizeof(struct my_struct)); //新建一个结点 s->id = user_id; //令结点的key值为user_id HASH_ADD_INT(g_users, id, s ); /* 其中id为键值的名称,将s结点加到hash表中 */ } strcpy(s->name, name); } 参考: https://blog.csdn.net/a123441/article/details/89045293 [http://troydhanson.github.io/uthash/][http_troydhanson.github.io_uthash] [https_github.com_troydhanson_uthash]: https://github.com/troydhanson/uthash [http_troydhanson.github.io_uthash]: http://troydhanson.github.io/uthash/ [http_troydhanson.github.io_uthash_userguide.html]: http://troydhanson.github.io/uthash/userguide.html
相关 uthash uthash是C的比较优秀的开源代码,它实现了常见的hash操作函数,例如查找、插入、删除等待。该套开源代码采用宏的方式实现hash函数的相关功能,支持C语言的任意数据结构最为 ╰+攻爆jí腚メ/ 2023年01月17日 09:17/ 0 赞/ 66 阅读
相关 存在重复元素217-力扣(数组+【快排qsort | 哈希uthash】+c | 集合set + py) 题目描述 给定一个整数数组,判断是否存在重复元素。 如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 示例 1: 古城微笑少年丶/ 2023年01月17日 08:27/ 0 赞/ 104 阅读
相关 UTHash使用C++范例的代码 将写代码过程比较好的内容做个收藏,下面的代码是关于UTHash使用C++范例的代码,应该能对码农有所好处。 include "uthash.h" s 向右看齐/ 2022年01月13日 00:45/ 0 赞/ 181 阅读
还没有评论,来说两句吧...