c语言vector用法
时间: 2023-07-22 07:26:09 浏览: 102
纯c语言向量vector实现vector_master
C语言中没有内置的 vector 类型,但可以使用结构体和指针来实现类似 vector 的功能。下面是一个简单的实现:
```c
#include <stdlib.h>
typedef struct vector {
int *data; // 数据指针
int size; // 当前元素个数
int capacity; // 容量
} vector;
vector *vector_new(int capacity) {
vector *vec = (vector *)malloc(sizeof(vector));
vec->data = (int *)malloc(sizeof(int) * capacity);
vec->size = 0;
vec->capacity = capacity;
return vec;
}
void vector_push_back(vector *vec, int value) {
if (vec->size == vec->capacity) { // 容量不足,扩容
vec->capacity *= 2;
vec->data = (int *)realloc(vec->data, sizeof(int) * vec->capacity);
}
vec->data[vec->size++] = value;
}
int vector_at(vector *vec, int index) {
if (index < 0 || index >= vec->size) {
return -1; // index 越界
}
return vec->data[index];
}
void vector_free(vector *vec) {
free(vec->data);
free(vec);
}
```
使用示例:
```c
int main() {
vector *vec = vector_new(4);
vector_push_back(vec, 1);
vector_push_back(vec, 2);
vector_push_back(vec, 3);
vector_push_back(vec, 4);
for (int i = 0; i < vec->size; i++) {
printf("%d ", vector_at(vec, i));
}
vector_free(vec);
return 0;
}
```
输出结果:1 2 3 4
这个 vector 实现比较简单,还有很多细节需要考虑,比如删除元素、插入元素、清空等操作。如果需要更完整的实现,可以参考一些现成的开源代码库,比如 STL。
阅读全文