首页 > 代码库 > 哈希容器的使用
哈希容器的使用
stl的容器库非常强大,但是为了要兼容各种元素类型,采用了模板进行泛化,这样的好处就是使用非常的方便,但是编译器会对使用到的每种类型都进行一遍实例化,用的类型太多的话不仅影响编译速度而且生成的可执行文件也很冗余。
因此,TBOX在设计容器架构的时候,引入tb_item_func_t类型,来设置容器使用的成员类型,这样在实现容器通用性的同时,也不会产生过的冗余,而且容器接口操作上,同样相当的便利。
可以先看个简单使用哈希的例子:
/* 初始化hash, 哈希桶大小8 * 键:大小写敏感字符串 * 值:long整型 */ tb_hash_ref_t hash = tb_hash_init(8, tb_item_func_str(tb_true), tb_item_func_long()); if (hash) { // 设置键值对:"key" => 123 tb_hash_set(hash, "key", (tb_pointer_t)123); // 获取值 tb_long_t value = http://www.mamicode.com/(tb_long_t)tb_hash_get(hash, "key");>怎么样,简单吧。各种类型项都是可以在键值上互用的,而且会去适配tb_hash_get和tb_hash_set等容器接口参数。
你也可以很方便的在初始化容器的时候,自定义成员释放函数、成员比较函数、哈希计算函数等,例如:
// 指针成员释放函数 static tb_void_t tb_hash_item_ptr_free(tb_item_func_t* func, tb_pointer_t buff) { // 断言检测 tb_assert_and_check_return(func && buff); // 获取用户私有数据 tb_pointer_t priv = func->priv; /* 获取成员数据,这里为tb_pointer_t类型,buff是指向成员数据的指针 * * 如果是tb_item_func_str()项类型,数据就是: * tb_char_t* data = http://www.mamicode.com/*((tb_char_t**)buff);>
- TBOX项目详情
- TBOX项目源码
- TBOX项目文档
哈希容器的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。