2014年02月03日 星期一 15:32
GLib库的Arrays数据结构相当于C++ STL中的Vector,是一种自动管理内存的数组,在增删数据元素时,无需担心内存溢出或者越界。
示例代码如下:
#include <stdio.h>
#include <glib.h>
gint cmp(gconstpointer a,gconstpointer b) {
gint ai=*(gint *)a;
gint bi=*(gint *)b;
return ai-bi;
}
int main(int argc,char **argv) {
GArray *a=g_array_new(TRUE,TRUE,sizeof(gint));
printf("length of array: %d\n",a->len);
for(gint i=0;i<10;i++) {
g_array_append_val(a,i);
}
printf("length of array: %d\n",a->len);
for(gint i=0;i<a->len;i++) {
printf("%d ",g_array_index(a,gint,i));
}
printf("\n");
for(gint i=0;i<10;i++) {
g_array_prepend_val(a,i);
}
printf("length of array: %d\n",a->len);
for(gint i=0;i<a->len;i++) {
printf("%d ",g_array_index(a,gint,i));
}
printf("\n");
gint k=10000;
//g_array_insert_val(a,10,10000);
g_array_insert_val(a,10,k);
for(gint i=0;i<a->len;i++) {
printf("%d ",g_array_index(a,gint,i));
}
printf("\n");
g_array_remove_index(a,10);
for(gint i=0;i<a->len;i++) {
printf("%d ",g_array_index(a,gint,i));
}
printf("\n");
g_array_sort(a,cmp);
for(gint i=0;i<a->len;i++) {
printf("%d ",g_array_index(a,gint,i));
}
printf("\n");
g_array_free(a,TRUE);
return 0;
}
参考资料:
Zeuux © 2025
京ICP备05028076号