GTK+中文社区(gtk.awaysoft.com)

 找回密码
 马上加入

QQ登录

只需一步,快速开始

查看: 2968|回复: 2

GHashTable的简单使用

[复制链接]
  • TA的每日心情
    奋斗
    2016-10-11 09:20
  • 签到天数: 271 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2012-2-26 16:29:39 | 显示全部楼层 |阅读模式
    GHashTable是一个利用哈希表来进行数据存储的类。
    通过这个类,实现全局变量、数据管理、配置维护相当的方便,同时,由于使用了hash,较之数组,读写都更加快捷。
    使用方法很简单。
    这里通过创建一个key类型为字符串的HashTable。
    GHashTable *global = g_hash_table_new(g_str_hash, g_str_equal);
    这里的g_str_hash是一个字符串类型的hash函数,参数类型为GHashFunc,形式为guint (*GHashFunc) (gconstpointer key);
    这是保证hashtable高效的关键。
    这里的g_str_equal是一个字符串类型的比较函数,参数类型为GEqualFunc,形式为gboolean (*GEqualFunc) (gconstpointer a, gconstpointer b);
    这是保证hashtable的key不撞车的关键。
    glib系统提供了5种常用类型的hash和equal函数,分别是指针、int、int64、double、字符串。
    创建了HashTable后就是如何使用了。
    1、查找key的值:g_hash_table_lookup(global, key);
    这里的global是GHashTable类型,key为要查找的key,返回类型为gpointer。
    2、添加、更改key的值:g_hash_table_insert(global, (gpointer)key, (gpointer)value);
    由于第二、三个参数类型为gpointer,如果value类型不是指针将报错,所以进行强制转换。
    3、获取所有key:g_hash_table_get_keys(global);
    返回类型为GList,注意,请不要修改GList内的值,否则可能导致hashtable的错误。
    4、删除某个key:g_hash_table_remove(global, key);
    返回类型为gboolean。
    最后就是记得释放空间:g_hash_table_destroy(global);


    转自:http://www.awaysoft.com/taor/%e6 ... %b0-ghashtable.html

    该用户从未签到

    发表于 2012-2-28 17:07:22 | 显示全部楼层
    你这斑竹真够闷的了,就自己经营自己了。。。
  • TA的每日心情
    奋斗
    2016-10-11 09:20
  • 签到天数: 271 天

    连续签到: 1 天

    [LV.8]以坛为家I

     楼主| 发表于 2012-2-28 21:06:17 | 显示全部楼层

    回 gbf 的帖子

    gbf:你这斑竹真够闷的了,就自己经营自己了。。。
     (2012-02-28 17:07) 
    哈哈,你可以一起的嘛。。。
    *滑块验证:
    您需要登录后才可以回帖 登录 | 马上加入

    本版积分规则

    申请友链|Archiver|小黑屋|手机版|GTK+中文社区 ( 粤ICP备13080851号 )

    我要啦免费统计

    GMT+8, 2024-4-25 22:40 , Processed in 0.043010 second(s), 7 queries , Redis On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表