c++包含vector
时间: 2023-11-04 07:57:12 浏览: 108
C语言中的标准库没有直接提供向量(vector)的功能,但是可以通过自定义结构体和相关的函数来实现类似向量的功能。下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int* data;
int size;
int capacity;
} Vector;
void vector_init(Vector* vec) {
vec->data = NULL;
vec->size = 0;
vec->capacity = 0;
}
void vector_push_back(Vector* vec, int value) {
if (vec->size == vec->capacity) {
int new_capacity = (vec->capacity == 0) ? 1 : vec->capacity * 2;
int* new_data = (int*)realloc(vec->data, new_capacity * sizeof(int));
if (new_data == NULL) {
printf("Failed to allocate memory\n");
return;
}
vec->data = new_data;
vec->capacity = new_capacity;
}
vec->data[vec->size++] = value;
}
void vector_free(Vector* vec) {
free(vec->data);
vec->data = NULL;
vec->size = 0;
vec->capacity = 0;
}
int main() {
Vector vec;
vector_init(&vec);
vector_push_back(&vec, 10);
vector_push_back(&vec, 20);
vector_push_back(&vec, 30);
for (int i = 0; i < vec.size; i++) {
printf("%d ", vec.data[i]);
}
vector_free(&vec);
return 0;
}
```
这段代码演示了如何使用自定义结构体 `Vector` 来模拟向量的功能。通过 `vector_init` 函数进行初始化,通过 `vector_push_back` 函数在向量末尾添加元素,通过 `vector_free` 函数释放内存。在 `main` 函数中演示了向向量中添加元素并打印输出的过程。
阅读全文