glib 库 hash table 使用
1. 常用函数:
GHashTable* g_hash_table_new (GHashFunc hash_func, GEqualFunc key_equal_func)
void g_hash_table_insert (GHashTable *hash_table, gpointer key, gpointer value)
gpointer g_hash_table_lookup (GHashTable *hash_table, gconstpointer key)
gboolean g_hash_table_lookup_extended (GHashTable *hash_table, gconstpointer lookup_key, gpointer *orig_key, gpointer *value)
2.使用举例
//string类型key的比较函数
gboolean g_str_equal (gconstpointer v1, gconstpointer v2)
{
const gchar *string1 = v1;
const gchar *string2 = v2; return strcmp (string1, string2) == 0;
} //string类型key生成函数
guint g_str_hash (gconstpointer v)
{
/* 31 bit hash function */
const signed char *p = v;
guint32 h = *p; if (h)
for (p += 1; *p != '\0'; p++)
h = (h << 5) - h + *p; return h;
} GHashTable *ghashtbal = g_hash_table_new (g_str_hash , g_str_equal);
char *key = "testkey";
char *value = "testvalue";
char *tmp = NULL; //插入的时候需要对内存
g_hash_table_insert (hash_table, strdup(key), strdup(value)); tmp = g_hash_table_lookup (hash_table, key);
//int类型key的比较函数
bool g_int_equal (void *a, void *b)
{
bool flag = false;
flag = *((const gint*) a) == *((const gint*) b);
return flag;
} //int类型key生成函数
unsigned int g_int_hash (void *key)
{
unsigned int num = ;
num = (unsigned int) *((const unsigned int*) key);
return num;
} GHashTable *ghashtbal = g_hash_table_new (g_int_hash , g_int_equal);
char *key = "testkey";
char *value = "testvalue";
char *tmp = NULL; //插入的时候需要对内存
g_hash_table_insert (hash_table, strdup(key), strdup(value)); //这个地方 tmp 有可能就找不到了
tmp = g_hash_table_lookup (hash_table, key);
glib 库 hash table 使用的更多相关文章
- Linux-c glib库hash表GHashTable介绍
百度云glib 链接:https://pan.baidu.com/s/1W9qdlMKWRKIFykenTVuWNQ 密码:ol6y hash表是一种提供key-value访问的数据结构,通过指定的 ...
- 几种常见 容器 比较和分析 hashmap, map, vector, list ...hash table
list支持快速的插入和删除,但是查找费时; vector支持快速的查找,但是插入费时. map查找的时间复杂度是对数的,这几乎是最快的,hash也是对数的. 如果我自己写,我也会用二叉检索树,它在 ...
- 散列表(hash table)——算法导论(13)
1. 引言 许多应用都需要动态集合结构,它至少需要支持Insert,search和delete字典操作.散列表(hash table)是实现字典操作的一种有效的数据结构. 2. 直接寻址表 在介绍散列 ...
- 系列篇|编译可在Android上运行的依赖库(一):glib库
前言 这是系列文章,它们由<编译可在Android上运行的glib库>及其他4篇文章组成,这4篇文章在“编译依赖库”一节中列出.由于glib库依赖于其他第三方库,所以需要先将依赖的第三方库 ...
- 哈希表(Hash Table)
参考: Hash table - Wiki Hash table_百度百科 从头到尾彻底解析Hash表算法 谈谈 Hash Table 我们身边的哈希,最常见的就是perl和python里面的字典了, ...
- Berkeley DB的数据存储结构——哈希表(Hash Table)、B树(BTree)、队列(Queue)、记录号(Recno)
Berkeley DB的数据存储结构 BDB支持四种数据存储结构及相应算法,官方称为访问方法(Access Method),分别是哈希表(Hash Table).B树(BTree).队列(Queue) ...
- PHP内核探索之变量(3)- hash table
在PHP中,除了zval, 另一个比较重要的数据结构非hash table莫属,例如我们最常见的数组,在底层便是hash table.除了数组,在线程安全(TSRM).GC.资源管理.Global变量 ...
- php Hash Table(四) Hash Table添加和更新元素
HashTable添加和更新的函数: 有4个主要的函数用于插入和更新HashTable的数据: int zend_hash_add(HashTable *ht, char *arKey, uint n ...
- php Hash Table(一) Hash Table的结构
关于Hash Table专题: 一直想深入理解一下php的hash table的实现,以前一直是星星点点的看看,从未彻底的总结过,那就从这个专题开始吧! 主要想总结几个部分:hashtable结构,h ...
随机推荐
- IOS开发之----异常处理
本文转载至 http://blog.csdn.net/chenyong05314/article/details/7906593 转载自:http://blog.sina.com.cn/s/blog_ ...
- OpenCV Machine Learning 之 正态贝叶斯分类器 (Normal Bayes Classifier)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhjm07054115/article/details/27631913
- swift和oc的混编
一.Swift工程中加入oc代码 1.在将oc代码加入到Swift工程的时候Xcode会自动创建一个桥接文件“yourProgectName-Bridging-Header.h”,如果没有创建或者删除 ...
- python优缺点小结
优点: 1.语言简洁优美 例如去除了大括号,写法简单,写法更接近于英语,其他语言几十上百行的代码,十来行就能解决,而且还好看 2.跨平台,window.linux.mac通用 3.排行高,社区完善 ...
- 最全面的HashMap和HashTable的区别
找工作期间不少企业都会问到有关HashMap和HashTable两者直接的区别,很多博客里虽然有提及但总是没有那么全面,只是一些常用的不同,现在就我自己所总结的比较全面的不同,归纳以下: HashMa ...
- zabbix 报表
摘自: https://www.w3cschool.cn/zabbix_manager/zabbix_manager-z45f1zie.html
- <tx:advice/> 有关的设置
将描述通过 <tx:advice/> 标签来指定不同的事务性设置.默认的 <tx:advice/> 设置如下: 事务传播设置是 REQUIRED 隔离级别是 DEFAULT 事 ...
- canvas练习单个矩形形变
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Android SDK和NDK
NDK是用来给安卓手机开发软件用的,但是和SDK不同的是它用的是C语言,而SDK用的是Java语言.NDK开发的软件在安卓的环境里是直接运行的,一般只能在特定的CPU指令集的机器上运行,而且C语言可以 ...
- Linux_学习_01_常用命令大全
一.文件目录 1.列出目录 ls -a #显示隐藏文件 -l #显示文件和目录的详细资料 -h -lrt tree #显示文件和目录由根目录开始的树形结构 lstree #显示文件和目录由根目录开始的 ...