c语言实现vector
时间: 2024-08-01 11:01:05 浏览: 87
在C语言标准库中并没有提供内置的向量(vector)数据结构,类似于其他现代编程语言如C++中的`std::vector`。但是,你可以通过动态数组或者链表来模拟类似的功能。这里简单介绍一种使用动态数组实现的简单"vector":
```c
#include <stdio.h>
#include <stdlib.h>
// 定义一个简单的Vector结构体
typedef struct {
int* data; // 动态数组存放元素
size_t capacity; // 当前数组容量
size_t size; // 当前元素个数
} Vector;
// 初始化vector
Vector* vector_create() {
Vector* vec = (Vector*)malloc(sizeof(Vector));
vec->data = NULL;
vec->capacity = 0;
vec->size = 0;
return vec;
}
// 在vector末尾添加元素
void vector_push_back(Vector* vec, int value) {
if (vec->size == vec->capacity) {
vec->capacity *= 2; // 如果满,扩大容量
vec->data = realloc(vec->data, vec->capacity * sizeof(int));
}
vec->data[vec->size++] = value;
}
// 读取vector最后一个元素
int vector_get_last(Vector* vec) {
if (vec->size > 0)
return vec->data[vec->size - 1];
else
return -1; // 或者抛出错误
}
// 示例用法
int main() {
Vector* v = vector_create();
vector_push_back(v, 1);
vector_push_back(v, 2);
printf("Last element: %d\n", vector_get_last(v)); // 输出 2
free(v); // 使用完记得释放内存
return 0;
}
```
阅读全文