利用uthash.h实现hashmap-创新互联
下载uthash.h
当前标题:利用uthash.h实现hashmap-创新互联
网页地址:http://myzitong.com/article/pojpc.html
【官网下载】:官网下载
创新互联建站主要从事成都网站制作、网站设计、外贸网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务德清,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792下载zip后,找到src目录,将其复制到C语言的头文件夹中。
如果使用的是vs:
1.随便打开一个c语言的文件,ctrl+鼠标正建打开头文件。
2.
打开文件夹后,复制进去,重启vs即可。
typedef struct my_map{int key;
int value;
UT_hash_handle hh; // make this structure hashable
}map;
//结构体中的key与value的类型可以根据情况自己定义
map* hashMap = NULL;
添加元素void hashMapAdd(int key,int value) {map* s;
HASH_FIND_INT(hashMap, &key, s);
if (s == NULL) {s = (map*)malloc(sizeof(map));
s->key = key;
HASH_ADD_INT(hashMap, key, s);
}
s->value = value;
}
HASH_FIND_INT(hashMap, &key, s);
hashmap:从哪里查找,传入指针
key:查找的元素,传入指针
s:out,结构存放,指针
HASH_ADD_INT(hashMap, key, s);
hashmap:添加到哪里,传入指针
key:添加的元素
s:要添加的结构指针
HASH_ADD_INT表示添加的键值为int类型
HASH_ADD_STR表示添加的键值为字符串类型
HASH_ADD_PTR表示添加的键值为指针类型
HASH_ADD表示添加的键值可以是任意类型
查找int hashMapFind(int key) {map* s;
s = (map*)malloc(sizeof(map));
HASH_FIND_INT(hashMap, &key, s);
return s->value;
}
删除void hashMapDelete(int key) {map* s;
HASH_FIND_INT(hashMap, &key, s);
if (s != NULL) {HASH_DEL(hashMap, s);
}
}
清除void hashMapClean() {map* current, * tmp;
HASH_ITER(hh, hashMap, current, tmp) {HASH_DEL(hashMap, current);
free(current);
}
}
遍历void Traverse() {map* s;
for (s = hashMap; s != NULL; s = s->hh.next) {printf("key: % d, value : % d\n", s->key, s->value);
}
}
全部代码#includetypedef struct my_map{int key;
int value;
UT_hash_handle hh; // make this structure hashable
}map;
map* hashMap = NULL;
void hashMapAdd(int key,int value) {map* s;
HASH_FIND_INT(hashMap, &key, s);
if (s == NULL) {s = (map*)malloc(sizeof(map));
s->key = key;
HASH_ADD_INT(hashMap, key, s);
}
s->value = value;
}
int hashMapFind(int key) {map* s;
s = (map*)malloc(sizeof(map));
HASH_FIND_INT(hashMap, &key, s);
return s->value;
}
void hashMapDelete(int key) {map* s;
HASH_FIND_INT(hashMap, &key, s);
if (s != NULL) {HASH_DEL(hashMap, s);
}
}
void hashMapClean() {map* current, * tmp;
HASH_ITER(hh, hashMap, current, tmp) {HASH_DEL(hashMap, current);
free(current);
}
}
void Traverse() {map* s;
for (s = hashMap; s != NULL; s = s->hh.next) {printf("key: % d, value : % d\n", s->key, s->value);
}
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前标题:利用uthash.h实现hashmap-创新互联
网页地址:http://myzitong.com/article/pojpc.html