毕设笔记 GHashTable

9 2 月

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);

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注