首页 > 其他分享 >【GLIB】GHashTable

【GLIB】GHashTable

时间:2024-07-25 11:11:09浏览次数:6  
标签:GLIB hash equal GHashTable func new table

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释放函数。

标签:GLIB,hash,equal,GHashTable,func,new,table
From: https://www.cnblogs.com/servlet-context/p/18322547

相关文章

  • java-cglib动态代理原理
    cglib使用1.引入依赖<!--添加cglib依赖--><dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>3.3.0</version>&......
  • bluez glib编程 --- main loop(主循环)
    主循环是事件驱动编程的核心概念,广泛应用于图形用户界面(GUI)和其他需要持续处理事件的应用中。它的主要作用是不断地检查和处理事件,如用户输入、网络数据、定时器等。在一个典型的主循环中,应用程序会做以下工作:检查是否有任何事件发生(如鼠标点击、键盘输入)。处理这些事件并执行......
  • bluez glib编程 --- signal 信号的监听
    监听添加新对象的信号objectManager=g_dbus_proxy_new_sync(conn,G_DBUS_PROXY_FLAGS_NONE,NULL,"org.bluez","/","org.freede......
  • bluz glib编程 --- 代码片段参考
    获取远端蓝牙的所有属性result=g_dbus_connection_call_sync(conn,"org.bluez",/org/bluez/hci0/dev_A4_C1_38_10_09_2C,"org.freedesktop.DBus.Properties","GetAll",g_variant_new("......
  • bluz glib编程 --- GVariant Format Strings 介绍
    GVariantFormatStrings类型字符串实例分析(sa{sv}as)外层是元组类型,内含三个成员,分别是字符串s字典类型数组a{sv},字符串作为key,variant作为value字符串类型数组as(i@ii)外层是元组类型,内含三个成员,分别是gint类型数字类型ivariant类型@i,对应数字......
  • jdk动态代理与cglib动态代理
    最近在用java实现redis,在使用动态代理时遇到了一点问题,即使用jdk动态代理(Invocationhandler)时,如果代理对象是一个接口的实现类,那么此时动态代理获取到的method对象是接口中的,而不是实现类的,现象是:我在实现类中对接口方法上新增了注解,但是此刻method反射获取不到注解信息,于是大概......
  • 大厂面试必备系列:一文彻底搞懂 Cglib 代理
    前言大家在面试中经常被问到Cglib和JDK动态代理有啥区别?然后每次回答都是Cglib通过创建目标类的子类来实现代理。这个回答当然是对的,但是太敷衍了,没得加分,今天我带大家深入了解下。最佳实践直接上案例案例地址:https://github.com/zhuangjiaju/easytools/blob/ma......
  • 丝滑解决ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_
    基础环境:MacOSm1、python=3.9前情提要:在Anaconda终端运行代码的时候,显示报错:importError:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:version`GLIBCXX_3.4.29'notfound1问题分析:根据提示是/usr/lib/x86_64-linux-gnu/路径下的libstdc++.so.6缺少版本GLIBCXX_3.4.29解......
  • [本科项目实训] Node.js、npm、pnpm配置及GLIBC_2.28缺失解决方案
    问题描述Node.js是一个基于Google的V8引擎的事件驱动I/O服务端JavaScript环境。以下主要解决在Ubuntu环境中的Node配置问题。解决方案使用node-v可以查看当前的node版本,如果未安装node和npm可以尝试以下指令:aptupdateaptupgradeapt-getinstallnodejsapt-get......
  • glibc库的交叉编译及使用
    1.环境准备宿主系统:ubuntu10.04交叉编译工具:arm-fsl-linux-gnueabi版本4.4.4下载glibc的源码包:ftp://ftp.gnu.org/gnu/glibc/glibc-2.11.1.tar.gz下载glibc-ports的源码包:ftp://ftp.gnu.org/gnu/glibc/glibc-ports-2.11.tar.gz2.分别解压缩文件:把glibc-ports-2.11文件夹......