TA的每日心情 | 奋斗 2016-10-11 09:20 |
---|
签到天数: 271 天 连续签到: 1 天 [LV.8]以坛为家I
|
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 |
|