【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_func
和key_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
)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)