uthash

头文件:

1
#include "uthash.h"
  1. 使用之前要创建一个结构体
1
2
3
4
5
struct HashTable{
int key;
int value;
UT_hash_handle hh;
};
1
2
hh是内部使用的hash处理句柄,必须在该结构体中定义该变量。 
Uthash所实现的hash表中,可以通过结构体成员hh的hh.prev和hh.next获取当前节点的上一个节点和下一个节点
  1. 之后定义一个哈希表指针
1
struct hashTable* hashtable;
  1. 添加

    向hashtable中添加数据

    • key是int 使用HASH_ADD_INT

    • key是字符串 使用HASH_ADD_STR

    • key是指针 使用HASH_ADD_PTR

      1
      HASH_ADD_INT(hashtable,key,tmp),插入tmp结点
  2. 替换

    • 如果key是int,可以使用 HASH_REPLACE_INT
  3. 查找

    • 如果key是int,可以使用 HASH_FIND_INT

      1
      2
      HASH_FIND_INT(hashtable,&key,tmp)
      其中tmp是要返回的结点,一般是NULL,需要我们在malloc(sizeof(struct hashtable))一个,然后把key val输进去
  4. 删除

    • HASH_DEL
  5. 计数

    • HASH_COUNT
  6. 遍历

    • HASH_ITER
  7. 排序

    • HASH_SORT