【C语言】动态数组vector实现

本文介绍了在C语言中如何自定义一个简单的动态数组结构,以弥补C语言标准库中缺乏类似C++ Vector或Java ArrayList的功能。这个动态数组适用于那些需要在运行时不确定容量的场景。
摘要由CSDN通过智能技术生成

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; /* 默认数组的
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值