glib中的GQueue结构体
来源:互联网 发布:怎么修改jenkins端口 编辑:程序博客网 时间:2024/05/22 01:44
glib库的GQueue的实现,是依托在GList的基础上:
内部保存有哪个双向队列的头和尾,故可以提供一些双向队列的接口,例如push_head, push_tail, pop_head, pop_tail。
有一个印象深刻的函数实现:
另外,*_remove_*式的函数,如果提供的参数是GList,仅代表从链表中remove(去除)这个节点,如果提供gpointer,则代表remove(去除)数据所在的节点,而且要delete(删除)/free(释放)这个节点内存(当然GLIB中并没有真正回收内存,而是回收内存到内存池中)。*_delete_*式的函数,通常都要回收内存。
内部保存有哪个双向队列的头和尾,故可以提供一些双向队列的接口,例如push_head, push_tail, pop_head, pop_tail。
有一个印象深刻的函数实现:
GList *g_queue_peek_nth_link (GQueue *queue, guint n){ GList *link; gint i; g_return_val_if_fail (queue != NULL, NULL); if (n >= queue->length) return NULL; // 如果n大于length/2,则往后开始查找。这里充分利用了length这个域 if (n > queue->length / 2) { n = queue->length - n - 1; link = queue->tail; for (i = 0; i < n; ++i)link = link->prev; } else { link = queue->head; for (i = 0; i < n; ++i)link = link->next; } return link;}
另外,*_remove_*式的函数,如果提供的参数是GList,仅代表从链表中remove(去除)这个节点,如果提供gpointer,则代表remove(去除)数据所在的节点,而且要delete(删除)/free(释放)这个节点内存(当然GLIB中并没有真正回收内存,而是回收内存到内存池中)。*_delete_*式的函数,通常都要回收内存。
- glib中的GQueue结构体
- glib库队列GQueue介绍
- glib库队列GQueue介绍
- glib中的调度
- glib中的陷阱
- glib库中的GQuark介绍
- GLib中的数据类型及操作
- glib
- GLib
- Glib
- glib
- glib
- glib中的GList ,GSList,GString,GTree,GTimer
- 关于glib中的线程demo之一
- glib中的log输出重定向方法
- glib中的哈希表学习(1)
- GLib中私有数据的表示 和 结构体最后的长度为0或者1的数组
- 结构体中的函数
- 云服务系列:Windows Azure SDK for .NET(2012 年 6 月发布的版本)的最新消息
- CPU GPU设计工作原理《转》
- Intent中的setType,setData,setDataAndType的区别
- Extjs-Flash报表 折线图
- hdu 1060 n^n的最左边的数
- glib中的GQueue结构体
- 细研GPU架构流程工作原理 .
- 有一天,我们可不可以如此幸福。
- DirectX初级编程:C#利用DirectSound播放WAV文件[最少只要4句话]
- 在cocos2d-x 中 printf 输出调式信息
- solr 创建日期索引字段和日期查询
- Django初学
- 总结android中常会出现的不好解决的问题和方法
- Android创建桌面快捷方式两种方法