C++中vector如何使用
时间: 2024-05-11 07:17:58 浏览: 102
在C语言中,没有标准的vector数据结构,但可以通过手动实现动态数组来模拟vector的功能。
下面是一个简单的动态数组实现,可以作为vector的替代品:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int* data;
int size;
int capacity;
} vector;
void vector_init(vector* v) {
v->size = 0;
v->capacity = 4;
v->data = malloc(sizeof(int) * v->capacity);
}
void vector_resize(vector* v, int capacity) {
int* data = realloc(v->data, sizeof(int) * capacity);
if (data) {
v->data = data;
v->capacity = capacity;
}
}
void vector_push_back(vector* v, int value) {
if (v->size == v->capacity) {
vector_resize(v, v->capacity * 2);
}
v->data[v->size++] = value;
}
void vector_free(vector* v) {
free(v->data);
}
int main() {
vector v;
vector_init(&v);
for (int i = 0; i < 10; i++) {
vector_push_back(&v, i);
}
for (int i = 0; i < v.size; i++) {
printf("%d ", v.data[i]);
}
printf("\n");
vector_free(&v);
return 0;
}
```
这个动态数组实现中,vector_init()函数用于初始化动态数组,vector_resize()函数用于调整动态数组的容量,vector_push_back()函数用于在动态数组的尾部添加元素,vector_free()函数用于释放动态数组的内存。
使用时,只需要定义一个vector类型的变量,然后调用相应的函数即可。比如,可以像下面这样使用:
```c
vector v;
vector_init(&v);
vector_push_back(&v, 1);
vector_push_back(&v, 2);
vector_push_back(&v, 3);
for (int i = 0; i < v.size; i++) {
printf("%d ", v.data[i]);
}
vector_free(&v);
```
阅读全文