【GLIB】GHashTable

1、定义

struct GHashTable {
  /* No available fields */
}

2、方法

2.1 new

GHashTable*
g_hash_table_new (
  GHashFunc hash_func,
  GEqualFunc key_equal_func
)

创建一个引用计数为1的GHashTable对象。

hash_func返回对象hash值,hash值决定对象存放位置。有一些通用类型的哈希函数:g_direct_hash、g_int_hash、g_int64_hash、g_double_hash、g_str_hash。如果为NULL,默认使用g_direct_hash。

key_equal_func用于查找哈希表中的键值。预置的比较函数如下:g_direct_equal、g_int_equal、g_int64_equal、g_double_equal、g_str_equal。如果为NULL,默认使用g_direct_equal的机制。

2.2 new_full

GHashTable*
g_hash_table_new_full (
  GHashFunc hash_func,
  GEqualFunc key_equal_func,
  GDestroyNotify key_destroy_func,
  GDestroyNotify value_destroy_func
)

创建一个引用计数为1的GHashTable对象,和g_hash_table_new类似。唯一的区别是可以指定内存释放函数,在移除元素时会调用内存释放函数。

2.42版本开始,允许释放函数递归的删除所有函数,但是只有在应用程序持有引用计数时才可以。因此在调用g_hash_table_unref释放引用计数之前,需要调用g_hash_table_remove_all释放所有元素。

key_destroy_func代表键值释放函数,value_destroy_func代表value释放函数。

2.3 insert

gboolean
g_hash_table_insert (
  GHashTable* hash_table,
  gpointer key,
  gpointer value
)

插入新的键值对。

如果键已存在,则会替换value。如果指定了value_destroy_funckey_destroy_func,则会使用对应的函数释放内存。

返回true表示key不存在。

2.4 foreach_remove

guint
g_hash_table_foreach_remove (
  GHashTable* hash_table,
  GHRFunc func,
  gpointer user_data
)

遍历哈希表键值对,并运行func函数。func返回true,则移除键值对。

返回值

移除键值对的数目。

GHRFunc定义如下:

gboolean
(* GHRFunc) (
  gpointer key,
  gpointer value,
  gpointer user_data
)
posted @ 2024-07-25 10:59  NotReferenced  阅读(10)  评论(0编辑  收藏  举报