c语言实现std::vector尾插
时间: 2024-05-11 22:12:21 浏览: 90
引用和提供了C++语言STL中vector尾插的实现方法,C语言中类似的实现需要自己动手实现动态数组的功能。以下是一种可以实现vector尾插的C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct vector {
int* data;
size_t size; // 当前元素数量
size_t capacity; // 容量大小
} vector;
void vector_init(vector* v) {
v->size = 0;
v->capacity = 2;
v->data = malloc(sizeof(int) * v->capacity);
}
size_t vector_size(vector* v) {
return v->size;
}
size_t vector_capacity(vector* v) {
return v->capacity;
}
void vector_push_back(vector* v, int value) {
if (v->size >= v->capacity) {
v->capacity *= 2;
v->data = realloc(v->data, sizeof(int) * v->capacity);
}
v->data[v->size++] = value;
}
void vector_free(vector* v) {
free(v->data);
}
int main() {
vector v;
vector_init(&v);
vector_push_back(&v, 1);
vector_push_back(&v, 2);
vector_push_back(&v, 3);
printf("vector size: %zu\n", vector_size(&v));
printf("vector capacity: %zu\n", vector_capacity(&v));
for (size_t i = 0; i < vector_size(&v); ++i) {
printf("%d ", v.data[i]);
}
printf("\n");
vector_free(&v);
return 0;
}
```
在上述代码中,`vector`结构体包含了一个指针`data`,该指针指向动态数组的起始地址,`size`表示当前元素数量,`capacity`表示容量大小。 `vector_init()`函数用于初始化一个动态数组,`vector_push_back()`函数用于在动态数组末尾插入元素,`vector_size()`和`vector_capacity()`函数分别用于获取当前元素数量和容量大小。最后,`vector_free()`函数用于释放动态数组内存。
阅读全文