请教一个关于glib中hash table的问题

阔野嘹歌 2017-03-07 11:57:01
请问glib的hash table能不能用自定义的结构体做key?
我现在有一个需求,要用到hash.
我想把tcp udp中的源ip,目的ip,源端口号,目的端口号这四元组做为一个结构体.用来做key,然后value是其它的一些数据.也是设计一个结构体.
现在key和value结构体是这样的:
typedef struct _key
{
unsigned short port_src;/* source port */
unsigned short port_dst;/* dest port */
unsigned int ip_src; /* source IP */
unsigned int ip_dst; /* dest IP */
} key;

typedef struct _value
{
struct timeval arrived_time;
} value;



请问一下能不能实现呢?


现在我的做法是用glib里面的指针类型去做这件事.但好像不可以:
g_hash_UDP = g_hash_table_new_full(g_direct_hash,IPEqualFunc,free_key,free_value);


现在每次insert相同的key(相同的已经填充好数据的四元组结构体)都会形成一个新的key:value,并不会像官方文档介绍的那样新的value会覆盖掉原来的value.

是不是我的理解有偏差呢?希望有熟悉glib的高手可以解答.谢谢
...全文
129 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧