c++中verctor
时间: 2024-05-11 21:01:41 浏览: 92
C语言中没有标准的vector容器,但是可以使用动态数组来实现类似vector的功能。动态数组可以通过malloc或realloc函数动态地分配内存空间,从而实现动态增加或减少数组元素的功能。
以下是一个简单的动态数组实现:
```
#include <stdlib.h>
typedef struct {
int *data; // 指向数组的指针
int size; // 数组的大小
int capacity; // 数组可容纳的元素个数
} vector;
void vector_init(vector *v) {
v->data = NULL;
v->size = 0;
v->capacity = 0;
}
void vector_push_back(vector *v, int value) {
if (v->size == v->capacity) {
int new_capacity = v->capacity == 0 ? 1 : v->capacity * 2;
int *new_data = (int *) realloc(v->data, new_capacity * sizeof(int));
if (new_data == NULL) {
exit(EXIT_FAILURE);
}
v->data = new_data;
v->capacity = new_capacity;
}
v->data[v->size++] = value;
}
void vector_pop_back(vector *v) {
if (v->size > 0) {
v->size--;
}
}
int vector_at(vector *v, int index) {
if (index < 0 || index >= v->size) {
exit(EXIT_FAILURE);
}
return v->data[index];
}
int vector_size(vector *v) {
return v->size;
}
void vector_free(vector *v) {
free(v->data);
v->data = NULL;
v->size = 0;
v->capacity = 0;
}
```
这个动态数组实现具有类似vector的功能,可以通过vector_init初始化一个空数组,通过vector_push_back向数组尾部添加元素,通过vector_pop_back从数组尾部删除元素,通过vector_at访问指定位置的元素,通过vector_size获取数组的大小,通过vector_free释放数组的内存空间。
阅读全文