Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > ищу реализацию array list на чистом c


Автор: leniviy 11.2.2011, 12:15
Я ищу что-то вроде этого. alist.h: 
Код

#include <malloc.h>

#define ALIST_DECL(t, n, capa) \
    t n ## _buf[capa]; \
    size_t n ## _capa = capa; \
    size_t n ## _len = 0; \
    t *n = n ## _buf

#define ALIST_FREE(n) do { \
    if (n != n ## _buf) \
        free(n); \
    } while(0)

static void *_alist_checkbounds(void *p_a, void *p_buf, size_t len, size_t *p_capa, size_t newcapa, size_t elsize) {
    void *p_rslt = p_a;
    size_t newsize, oldsize;
    if (*p_capa < newcapa) {
        *p_capa *= 2;
        if (*p_capa < newcapa)
            *p_capa = newcapa;
        newsize = *p_capa * elsize;
        oldsize = len * elsize;
        if (p_a == p_buf) {
            p_rslt = malloc(newsize);
            memcpy(p_rslt, p_a, oldsize);
        } else {
            p_rslt = realloc(p_a, newsize);
        }
    }
    return p_rslt;
}

#define ALIST_ADD(n, el) do { \
        n = _alist_checkbounds(n, n ## _buf, n ## _len, &n ## _capa, n ## _len+1, sizeof(n[0])); \
        n[n ## _len++] = el; \
    } while(0)
...


linked list - масса, а array list не могу найти. Самому лень делать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)