# vec **Repository Path**: MacRsh/vec ## Basic Information - **Project Name**: vec - **Description**: No description available - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-08-31 - **Last Updated**: 2024-12-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Vec [English document](README_EN.md) 这个项目包含一个动态数组(向量)的简单实现,提供了一些基本的向量操作函数。 ## 特性 - **内存管理**:提供初始化、去初始化和删除向量的函数。 - **基本操作**:支持插入、删除、获取元素等操作。 - **动态调整**:自动调整容量以适应元素的增加。 ## 使用 要使用此向量实现,请将此项目包含到您的工程中,并包含头文件 `vec.h`。 ## 函数 ### 初始化和销毁 - `int vec_init(Vec_t *vec, size_t capacity)`:初始化向量。 - `void vec_deinit(Vec_t *vec)`:去初始化向量。 - `Vec_t *vec_new(size_t capacity)`:创建新的向量。 - `void vec_del(Vec_t *vec)`:销毁向量。 ### 基本操作 - `int vec_push(Vec_t *vec, void *data)`:将数据插入向量尾部。 - `void *vec_pop(Vec_t *vec)`:从向量尾部移除数据并返回。 - `int vec_insert(Vec_t *vec, size_t index, void *data)`:在指定索引位置插入数据。 - `void *vec_remove(Vec_t *vec, size_t index)`:移除指定索引位置的数据并返回。 - `void *vec_get(Vec_t *vec, size_t index)`:获取指定索引位置的数据。 - `void *vec_first(Vec_t *vec)`:获取向量的第一个数据。 - `void *vec_last(Vec_t *vec)`:获取向量的最后一个数据。 ### 工具函数 - `void vec_clear(Vec_t *vec)`:清空向量。 - `size_t vec_len(Vec_t *vec)`:返回向量中的元素数量。 - `bool vec_is_empty(Vec_t *vec)`:检查向量是否为空。 - `size_t vec_capacity(Vec_t *vec)`:返回向量的容量。 - `int vec_reserve(Vec_t *vec, size_t reserve_size)`:调整向量容量以保留额外的空间。 - `int vec_shrink_to(Vec_t *vec, size_t capacity)`:将向量容量缩小到指定大小。 - `int vec_shrink_to_fit(Vec_t *vec)`:将向量容量缩小到当前元素数量。 ## 简单示例 ```c #include #include int main(void) { /* 创建向量 */ Vec_t *vec = vec_new(10); /* 插入数据 */ vec_push(vec, "data1"); vec_push(vec, "data2"); /* 获取第一个数据 */ void *data = vec_first(vec); printf("第一个数据: %s\n", (char *)data); /* 遍历向量 */ for (size_t i = 0; i < vec_len(vec); i++) { printf("遍历向量: %s\n", (char *)vec_get(vec, i)); } /* 销毁向量 */ vec_del(vec); return 0; } ``` ## 许可证 本项目使用 Apache-2.0 许可证许可。有关详细信息,请参阅 LICENSE 文件。 ## 作者 (c) 2024, MacRsh