c语言中vector的用法
时间: 2024-03-25 16:33:22 浏览: 17
在C语言中,没有内置的vector类型,但可以通过动态分配内存来实现类似的功能。下面是一种常见的实现方式:
1. 定义结构体:
```c
typedef struct {
int* data; // 存储数据的数组指针
int size; // 当前存储的元素个数
int capacity; // 数组的容量
} Vector;
```
2. 初始化Vector:
```c
void initVector(Vector* vec, int capacity) {
vec->data = (int*)malloc(capacity * sizeof(int));
vec->size = 0;
vec->capacity = capacity;
}
```
3. 添加元素:
```c
void pushBack(Vector* vec, int value) {
if (vec->size == vec->capacity) {
// 当容量不足时,重新分配内存
vec->capacity *= 2;
vec->data = (int*)realloc(vec->data, vec->capacity * sizeof(int));
}
vec->data[vec->size++] = value;
}
```
4. 获取元素:
```c
int get(Vector* vec, int index) {
if (index >= 0 && index < vec->size) {
return vec->data[index];
}
return -1; // 返回一个特殊值表示索引无效
}
```
5. 释放内存:
```c
void freeVector(Vector* vec) {
free(vec->data);
vec->size = 0;
vec->capacity = 0;
}
```
使用示例:
```c
int main() {
Vector vec;
initVector(&vec, 10);
pushBack(&vec, 1);
pushBack(&vec, 2);
pushBack(&vec, 3);
printf("Vector size: %d\n", vec.size);
printf("Vector capacity: %d\n", vec.capacity);
for (int i = 0; i < vec.size; i++) {
printf("%d ", get(&vec, i));
}
printf("\n");
freeVector(&vec);
return 0;
}
```
输出结果:
```
Vector size: 3
Vector capacity: 10
1 2 3
```