当前位置:主页   - 电脑 - 程序设计 - C/C++
C语言中也可以方便地进行遍历
来源:网络   作者:zsxxsz   更新时间:2011-04-10
收藏此页】    【字号    】    【打印】    【关闭

  请先看一个例子,如下:

  C代码

    void test()
    {
        ACL_HTABLE *table = acl_htable_create(10, 0);  /* 创建哈希表 */
        ACL_HTABLE_ITER iter;  /* 哈希表的遍历变量 */
        char *value, key[32];
        int   i;
        for (i = 0; i < 100; i++) {
            value = (char*) acl_mystrdup("value");
            snprintf(key, sizeof(key), "key:%d", i);
            (void) acl_htable_enter(table, key, value);  /* 向哈希表中添加元素 */
        }
        /* 遍历哈希表中的所有元素 */
        acl_htable_foreach(iter, table) {
            printf("%s=%s\n", acl_htable_iter_key(iter), acl_htable_iter_value(iter));
        }
        /* 释放哈希表表 */
        acl_htable_free(table, acl_myfree_fn);
    }

  哈,用C语言也可以实现其它编程语言里的迭代器,而且用法也异常简单,虽然它没有C++中的功能强大,但却比较实用,而且操作手法有点象D、JAVA的遍历方式。下面再请看一个利用ACL里的先进先出队列的例子:

  C代码

    void test()
    {
        ACL_FIFO fifo;
        ACL_FIFO_ITER iter;
        char *data;
        int   i;
        acl_fifo_init(&fifo);  /* 初始化队列对象 */
        for (i = 0; i < 10; i++) {
            data = acl_mymalloc(32);
            snprintf(data, 32, "data: %d", i);
            acl_fifo_push(&fifo, data);  /* 向队列中添加元素 */
        }
        /* 反向遍历队列中的所有元素 */
        acl_fifo_foreach_reverse(iter, &fifo) {
            printf("%s\n", (char*) iter.ptr->data);  /* 打印元素字符串 */
        }
        while (1) {
            /* 弹出队列中的所有元素 */
            data = acl_fifo_pop(&fifo);
            if (data == NULL)
                break;
        }
    }

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明