C Programer  - 讨论区

标题:GLib库Arrays模块编程示例

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;
}

参考资料:

https://developer.gnome.org/glib/2.39/glib-Arrays.html

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号