设为首页 加入收藏

TOP

hashmap C语言实现(三)
2014-11-23 23:55:08 来源: 作者: 【 】 浏览:66
Tags:hashmap 语言 实现
ree_data(void* data, void *arg) {
userdata *dat = (userdata *) data;
/* 删除整个子 map */
hashmap_destroy(dat->map, free_elem, 0);
free(dat);
return 0;
}

int main(int argc, char* argv[])
{
hmap_t map;
userdata *dat;
userelem *el;
int ret, i, j;

/* 创建 hashmap */
map = hashmap_create();

/* 插入 hashmap 元素 */
for (i=0; i<100; i++) {
dat = (userdata *)malloc(sizeof(userdata));

/* 创建子 hashmap */
dat->map = hashmap_create();

/* 插入子 hashmap 元素 */
for (j=0; j<10; j++) {
el = (userelem *)malloc(sizeof(userelem));
sprintf(el->key, "%d", j);

el->value = (char*) malloc(30);
sprintf(el->value, "%d", j+1000);
ret = hashmap_put(dat->map, el->key, el);
assert(ret==HMAP_S_OK);
}

sprintf(dat->name, "%d", i);
ret = hashmap_put(map, dat->name, dat);
assert(ret==HMAP_S_OK);
}

printf("hashmap_size: %d\n", hashmap_size(map));

/* 删除指定元素: key="10" */
ret = hashmap_remove(map, "10", &dat);
assert(ret==HMAP_S_OK);
printf("hashmap_remove: name=%s. size=%d\n", dat->name, hashmap_size(map));
hashmap_iterate(dat->map, iter_elem, 0);
free_data(dat, 0);

/* 删除指定元素: key="11" */
ret = hashmap_remove(map, "11", &dat);
assert(ret==HMAP_S_OK);
printf("hashmap_remove: name=%s. size=%d\n", dat->name, hashmap_size(map));
hashmap_iterate(dat->map, iter_elem, 0);
free_data(dat, 0);

/* 查询元素: key="99" */
ret = hashmap_get(map, "99", &dat);
assert(ret==HMAP_S_OK);
printf("hashmap_get: name=%s. size=%d\n", dat->name, hashmap_size(map));
hashmap_iterate(dat->map, iter_elem, 0);

/* 删除整个 map */
hashmap_destroy(map, free_data, 0);

_CrtDumpMemoryLeaks();
return 0;
}
作者:cheungmine

首页 上一页 1 2 3 4 5 下一页 尾页 3/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇sqrt函数分析 下一篇c语言的头文件#include <limit..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: