【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 @   NotReferenced  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示