用C++实现一个vector出来
时间: 2023-02-07 17:16:27 浏览: 90
好的。
首先,需要了解什么是 vector。Vector 是一种动态数组,它可以动态地增加或减少元素。
下面是使用 C 语言实现 vector 的一种方式:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int *data; // 指向动态数组的指针
int size; // 动态数组的大小
int capacity; // 动态数组的容量
} Vector;
// 初始化 vector
void vector_init(Vector *vector) {
vector->data = malloc(sizeof(int) * 4);
vector->size = 0;
vector->capacity = 4;
}
// 销毁 vector
void vector_destroy(Vector *vector) {
free(vector->data);
}
// 在 vector 末尾添加元素
void vector_push_back(Vector *vector, int value) {
if (vector->size == vector->capacity) {
// 动态数组已满,需要扩容
vector->capacity *= 2;
vector->data = realloc(vector->data, sizeof(int) * vector->capacity);
}
vector->data[vector->size++] = value;
}
// 在 vector 中删除最后一个元素
void vector_pop_back(Vector *vector) {
if (vector->size > 0) {
vector->size--;
}
}
// 获取 vector 中指定位置的元素
int vector_get(Vector *vector, int index) {
if (index >= 0 && index < vector->size) {
return vector->data[index];
}
return 0;
}
// 在 vector 中的指定位置插入元素
void vector_insert(Vector *vector, int index, int value) {
if (index < 0 || index > vector->size) {
return;
}
if (vector->size == vector->capacity) {
vector->capacity *= 2;
vector->data = realloc(vector->data, sizeof(int) * vector->capacity);
}
for (int i = vector->size; i > index; i--) {
vector->data[i] = vector->data[i - 1];
}
vector->data[index] = value;
vector->size++;
}
// 在 vector 中删除
阅读全文