c语言实现vector函数
时间: 2024-06-16 15:08:46 浏览: 85
纯c语言向量vector实现vector_master
C语言本身并没有提供内置的vector,但可以通过结构体和动态内存分配来实现类似于vector的功能。
下面是一个简单的示例代码,展示了如何使用结构体和动态内存分配实现一个简单的vector函数:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int* data;
int size;
int capacity;
} Vector;
void vector_init(Vector* vec) {
vec->data = NULL;
vec->size = 0;
vec->capacity = 0;
}
void vector_push_back(Vector* vec, int value) {
if (vec->size >= vec->capacity) {
vec->capacity = (vec->capacity == 0) ? 1 : vec->capacity * 2;
vec->data = (int*)realloc(vec->data, vec->capacity * sizeof(int));
}
vec->data[vec->size++] = value;
}
int vector_get(Vector* vec, int index) {
if (index >= 0 && index < vec-1; // 返回一个特殊值表示索引无效
}
void vector_free(Vector* vec) {
free(vec->data);
vec->data = NULL;
vec->size = 0;
vec->capacity = 0;
}
int main() {
Vector vec;
vector_init(&vec);
vector_push_back(&vec, 10);
vector_push_back(&vec, 20);
vector_push_back(&vec, 30);
printf("Vector size: %d\n", vec.size);
printf("Vector capacity: %d\n", vec.capacity);
for (int i = 0; i < vec.size; i++) {
printf("Vector[%d]: %d\n", i, vector_get(&vec, i));
}
vector_free(&vec);
return 0;
}
```
这个示例代码中,我们定义了一个名为Vector的结构体,其中包含一个指向动态分配的整型数组的指针data,以及当前元素个数size和容量capacity。vector_init函数用于初始化一个Vector对象,vector_push_back函数用于向Vector中添加元素,vector_get函数用于获取指定索引处的元素值,vector_free函数用于释放Vector对象占用的内存。
请注意,这只是一个简单的示例,实际上,实现一个完整的、功能齐全的vector函数需要考虑更多的细节和边界情况。
阅读全文