C++ vector 的方法
时间: 2023-11-04 19:08:02 浏览: 80
C 语言中没有内置的 vector 类型,但可以通过结构体和指针等手段模拟实现类似于 vector 的动态数组。以下是实现一个简单的动态数组的一些常用方法:
1. 初始化:创建一个动态数组并初始化为指定大小。
```c
typedef struct {
int *data;
int size;
int capacity;
} Vector;
void vector_init(Vector *vec, int init_size) {
vec->data = (int *)malloc(sizeof(int) * init_size);
vec->size = 0;
vec->capacity = init_size;
}
```
2. 判断数组是否为空:
```c
int vector_empty(Vector *vec) {
return vec->size == 0;
}
```
3. 获取数组元素个数:
```c
int vector_size(Vector *vec) {
return vec->size;
}
```
4. 获取数组容量大小:
```c
int vector_capacity(Vector *vec) {
return vec->capacity;
}
```
5. 获取数组中指定位置的元素:
```c
int vector_get(Vector *vec, int index) {
if (index < 0 || index >= vec->size) {
fprintf(stderr, "Index out of range\n");
exit(1);
}
return vec->data[index];
}
```
6. 在数组末尾添加一个元素:
```c
void vector_push_back(Vector *vec, int value) {
if (vec->size == vec->capacity) {
vec->capacity *= 2;
vec->data = (int *)realloc(vec->data, sizeof(int) * vec->capacity);
}
vec->data[vec->size++] = value;
}
```
7. 删除数组末尾的一个元素:
```c
void vector_pop_back(Vector *vec) {
if (vector_empty(vec)) {
fprintf(stderr, "Vector is empty\n");
exit(1);
}
vec->size--;
}
```
8. 释放动态数组的内存:
```c
void vector_free(Vector *vec) {
free(vec->data);
vec->data = NULL;
vec->size = 0;
vec->capacity = 0;
}
```
以上是一个简单的动态数组实现,可以通过结构体和指针等手段扩展实现更多的方法。
阅读全文