哈希表C开源的uthash的简单初步封装(一)

本文介绍了如何使用开源库uthash进行哈希表的简单封装,以提高数据处理效率。作者创建了sky_hash.c和sky_hash.h,封装了针对int类型key的哈希表操作,并提供了测试及编译方法。通过阅读uthash文档,读者可以理解这个封装过程。
摘要由CSDN通过智能技术生成

概述:在自己项目中,数据处理过程我们或多或少可能都会用到哈希表,而自己去实现麻烦,效率又低。我就找了开源库uthash,这个库哈希表的实现,就是一个头文件(uthash.h)就实现了。但在我们具体使用,可能还是需要自己再封装一层,这样用起来可能更加方便简洁一些。因为也是刚接触这个一天,所以就先自己需要,封装了一个支持key值为int类型的哈希表。

1,创建了一个sky_hash.c和一个sky_hash.h用于封装。那我们先看一下.h文件吧。主要封装了哈希表的基本结构。

#ifndef _SKY_HASH_H_
#define _SKY_HASH_H_

#include <stdlib.h>
#include "uthash.h"

typedef struct hash_data hash_data_t;              
typedef void (*hash_cb_t)(hash_data_t *, void *arg);   

struct hash_data {  
    int key;                   /* key */  
    void *data;                /*数据*/
    UT_hash_handle hh;         /* makes this structure hashable */  
};  

hash_data_t *sky_hash_find(hash_data_t **hashlist, int key);
int sky_hash_add(hash_data_t **hashlist, int key, void *data);
int sky_hash_del(hash_data_t **hashlist, int key);
void sky_hash_delall(hash_data_t **hashlist);
int sky_hash_count(hash_data_t **hashlist);
void sky_hash_ergodic(hash_data_t **hashlist, hash_cb_t callback, void *arg);



#endif

2,贴一下sky_hash.c文件的内容,其实也没有做太多东西,就是把uthash封装好的函数再封装一层。所以,只要看一下uthash文档就可以看懂这个封装了。

#include <stdio
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值