glib中的GList ,GSList,GString,GTree,GTimer
来源:互联网 发布:迦南诗歌软件 编辑:程序博客网 时间:2024/06/06 02:47
Glib数据结构
- Glib数据结构
-
表
GList
最初都是NULL,不断插入形成表
name=g_list_append(name,datapointer) //注意这里并不是拷贝
name=g_list_prepend(name,datapointer);
name=g_list_insert(name,dattapointer,pos); //位置是从0开始
在表中移动
name=g_list_next(name)
name=g_list_previous(name;
name=g_list_last(name);
name=g_list_first(name);
name=g_list_nth(第一项);
g_list_free(表的第一项)
数据有时候需要g_free掉
使用比较函数
1. name=g_list_sort(name,(GCompareFunc)func);
gint (*GCompareFunc) (gconstpointer a, gconstpointer b) if (a<b) return -1 else if (a>b) return 1 else return 0;
2. name=g_list_insert_sorted(name,datapointer,(GCompareFunc)func);
3. name=g_list_remove(name,datapointer) 只有最前面的相同数据删除
name=g_list_remove_all(name,datapointer)
void g_list_foreach(name,(GFunc)func, user_data_pointer);
void (*GFunc) (gpointer data, gpointer user_data);
当然也有 g_slist_foreach()
GSList
最初都是NULL,不断插入形成表
name=g_slist_append(name,datap);
name=g_slist_prepend(name,datap);
name=g_slist_insert(name,datap);
在表中移动
name=g_slist_next(name);
name=g_slist_last(name)
name=g_slist_nth(第一项)
g_slist_free(表的第一项)
树
GTree *name = g_tree_new((GCompareFunc)func)); //这是一种平衡树
新建一个树需要一个比较函数,表中的比较函数也与之相同
插入一个数据,包含key,和value,比较函数用于key
void g_tree_insert(name,keypointer,valuepointer) //与g_list_insert()不同,如果有相同的key就会覆盖value
void g_tree_remove(name,keypointer)
gpointer g_tree_lookup(name,keypointer) 返回keypointer
void g_tree_traverse(name,(GTraverseFunc)func,GTraverseType type, usr_data_pointer);
gint (*GTraverseFunc)(gpointer key, gpointer value, gpointer data); 如果返回true就停止遍历,否则false
GTraverseType 有3中 G_IN_ORDER, G_PRE_ORDER, G_POST_ORDER
g_true_destroy()
字符串
GString
GString *myname; GString 实际只是保存一个指针和一个数的结构
myname=g_string_new("Peter");
或者 myname=g_string_size_new(1000);
赋值 g_string_assign(GString *, "string"); 如果 “string"的长度大于其长度,将会导致重新分配内存,从而更改相应的指针
myname=g_string_assign(myname,"Peter Jobs");
释放串
gchar *g_string_free(GString *, boolean) 如果为false只是删除这个结构,如果是true就会删除其串
返回null如果是真,否则返回其串,串可以接着使用
操作
myname=g_string_append(myname,"Pete");
myname=g_string_prepend(myname,"pete");
myname=g_string_insert(myname,10,"Gtk+/") 注意从0开始
myname=g_string_up
使用
g_print(myname->str)
myname=g_string_up(myname);
myname=g_string_down(myname);
myname=g_string_erase(myname,0,4); 要删除的文本的位置以及字符数
传统字符串
gchar me[] = "pete"
gchar *mini;
mini=strdup(me); 复制
mini=strndup(me,2); 复制前两个 使用完后记得g_free()
串比较
g_strcasecmp(gchar *,gchar *)
g_strncasecmp(gchar *,gchar *) 比较前n个字符 注意这个函数是基于字符是bytes
分解串
gchar **g_strsplit(gchar *,"分解串“,最大数组长度)
注意使用完后,用void g_strfreev(a) 释放这个字符串数组
计时器
GTimer *myt;
myt=g_timer_new();
g_timer_destroy(myt);
启动和停止
g_timer_start(myt);
g_timer_stop(myt);
g_timer_reset(myt);
g_timer_continue(myt);
时间
gdouble g_timer_elapsed(myt,gulong *) 返回的是秒,gulong是毫秒,如果不是null
- glib中的GList ,GSList,GString,GTree,GTimer
- GTree & GList
- GTK Gossip: GSList、GList
- glib库单向链表GSList介绍
- glib库单向链表GSList介绍
- glib库双向链表GList介绍
- glib库双向链表GList介绍
- GString
- GString
- GTK中的字符串操作GString
- GString结构
- glib中的调度
- glib中的陷阱
- glib中的GQueue结构体
- glib库中的GQuark介绍
- GLib中的数据类型及操作
- GTK Gossip: GTimer
- GTimer只是个计时器
- 从键盘输入一个串,将其中的小写字母全部换成大写字母,然后输出到一个磁盘文件“TEST”中保存输入的字符串以“!”结束。
- 关于Node.js
- 静态代码检查工具PC-Lint
- Spring集成Hibernate
- 医院院长修电视-----鄙视医院乱收费情况
- glib中的GList ,GSList,GString,GTree,GTimer
- YUI Compressor
- Silverlight5.0正式发布附下载地址
- Android之ListActivity的使用和在ListView中添加图片文字
- C语言 内存对齐
- JSP 即使使用UTF-8编码,仍然出现中文乱码问题的原因
- 利用DirectX 9.0 三维重力坝体型设(一)挡水坝段绘制
- 正则表达式的内容(一)
- SpringAOPLab--概念