用c语言写 成一个vector

来源:互联网 发布:python网络编程 pdf 编辑:程序博客网 时间:2024/06/05 17:19

头文件

#ifndef  __BlockVector_H_#define  __BlockVector_H_#define BLOCK_VECTOR_DEF(Type) \    struct jdaVector##Type { \    int size; \    int capacity; \    Type *data; \    }#define BLOCK_VECTOR(Type) \    struct jdaVector##Type#define BLOCK_VECTOR_NEW(v, size_, Type) \    do { \    (v).size = 0; \    (v).capacity = 2 * size_; \    (v).data = (Type*)malloc((v).capacity * sizeof((v).data[0])); \    } while (0)#define BLOCK_VECTOR_INSERT(v, value, Type) \    do { \    (v).size++; \    if ((v).size > (v).capacity) { \    int capacity_new = 2 * (v).capacity; \    (v).data = (Type*)realloc((v).data, capacity_new * sizeof(value)); \    (v).capacity = capacity_new; \    } \    (v).data[(v).size - 1] = (value); \    } while (0)#define BLOCK_VECTOR_INSERT_MORE(v, values, size_, Type) \    do { \    int size_new; \    size_new = (v).size + size_; \    if (size_new > (v).capacity) { \    int capacity_new = 2 * (((v).capacity < size_new) ? size_new : (v).capacity); \    (v).data = (Type*)realloc((v).data, capacity_new * sizeof((values)[0])); \    (v).capacity = capacity_new; \    } \    memcpy(&(v).data[(v).size], values, size_ * sizeof((values)[0])); \    (v).size = size_new; \    } while (0)#define BLOCK_VECTOR_DEFAULT_LEN  200#define BLOCK_VECTOR_RELEASE(v) \    do{ if ((v).data)  free((v).data);} \    while(0)#define BLOCK_VECTOR_CLEAR(v) \    do{ \    (v).size = 0; \    } \    while(0)BLOCK_VECTOR_DEF(int);BLOCK_VECTOR_DEF(float);#endif
原创粉丝点击