| | |
| | | 最初都是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()
|
|
|
| | | 最初都是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(第一项)
|
| |
|
| | | 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 *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
|
|
|