C语言中缺少类似C++ Vector或者Java ArrayList 的通用动态数组的库函数。但有些场景数组的容量没法确定,故自己造个简单的动态数组轮子,以便后续能使用得到。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
/* 数组数据域成员类型 */
typedef struct _DataStruct {
int data;
} DataStruct;
/* 动态数组vector类型 */
typedef struct _Vector {
int size; /* 数组当前使用的长度 */
int capacity; /* 数组最大可使用长度 */
DataStruct *array;
} Vector;
/* 动态数组常用的一些操作 */
void VectorInit(Vector *vector); /* 初始化 */
void VectorAppend(Vector *vector, DataStruct *data); /* 向数组中添加元素 */
DataStruct *VectorGet(Vector *vector, int index); /* 获取指定索引的元素 */
void VectorSet(Vector *vector, int index, DataStruct *data); /* 设置当前索引的值 */
void VectorAppendWithDeduplicate(Vector *vector, DataStruct *data, bool (*IsEqual)(void *, void *)); /* 向数组中添加元素,去重 */
bool VectorIsFull(Vector *vector); /* 判断当前数组是否满 */
void VectorFree(Vector *vector); /* 释放当前数组 */
#define DEFAULT_MAX_CAPACITY 10; /* 默认数组的