オープンソースライブラリ「uthash.h」の使用方法レコード

1150 ワード

「uthash.h」はハッシュテーブルに関する非常に使いやすいC言語のオープンソースライブラリであり、この使用方法を記録します.
「uthash.h」はGitHubから直接クローンを使えばいいです.
使用時#include“uthash.h”でOKです.
次に、関連関数の使用方法について重点的に説明します.
まず、構造体が必要です.
struct hash_table{
    int key;
    int value;  //any type
    UT_hash_handle hh; //necessary
};

typedef struct hash_table* hash_ptr;

keyとvalueのタイプは変えられますが、hhというハンドルは必要です.
挿入:
keyのタイプに応じて異なる関数を使用します.
int:HASH_ADD_INT
文字列:HASH_ADD_STR
pointer: HASH_ADD_PTR
その他のタイプ:HASH_ADD
前のいくつかは実質的に最後のHASHを呼び出した.ADD.
例:
hash_ptr elem, table = NULL; //table       ,elem         
                             //table      NULL

elem = (hash_ptr)malloc(sizeof(struct hash_table));
elem->key = mykey;
elem->value = myvalue;
HASH_ADD_INT(table, key, elem);   //           key      

検索:
同じように、タイプによって異なる関数を使用します.
例えばkeyはint:HASH_FIND_INT
使いやすいように、keyに基づいて検索した関数を自分で書いて、構造体ポインタを返すことができます.

hash_ptr find_node(hash_ptr table, int key)
{
    if(!table)
        return NULL;
    hash_ptr s;
    HASH_FIND_INT(table, &key, s);
    return s;
}